NSLogとNSString


プログラムをしていてデバッグの基本となるのがログの出力です。
OSアプリ開発のObjective-Cでログの出力といえばNSLogです。

 

 

 

このときのNSStringフォーマットでよく使うのは、
%d:整数(int等)
%f:浮動小数点(float等)
%@:オブジェクト(NSString等)
%s:Null-terminatedの文字列
といった感じです。
本当はもっとたくさんありますが、知りたい方はこちらをどうぞ。

その他、NSLogではファイル名、関数、関数等も出力できます。

__FILE_:ファイル名
__PRETTY_FUNCTION__:クラス名とメソッド名
__LINE__:行数
また
NSStringFromCGRect:CGRectからNSString
NSStringFromCGPoint:CGPointからNSString
NSStringFromCGSize:CGSizeからNSString
なども意外と便利かもしれません。
(NSStringFrom系は他にもいろいろありますので、Xcodeのコード補完を参照ください)

でも、個人的に一番使うのは、これかな。

NSLog(@"line:%d", __LINE__);

コードのあちこちに入れておくと、関数の入り方や、条件分岐などがトレースできるし、
邪魔になったらFind and Replaceでコメントアウトしておけばいいし、結構使ってます。

 

ちなみにNSLogのサンプルコードはこんな感じです。

文字列

NSLog(@"foo");
// output:<br />// foo


NSString

NSString *str = [NSString stringWithFormat:@"bar"];
NSLog(@"%@",str);
// output:
// bar


int

int i = 1;
NSLog(@"%d",i) ;
// output:
// 1


BOOL

// BOOLはframeworkの処理で、0と1になってます。
BOOL y = YES;
NSLog(@"%d",y) ;
// output:
// 1
BOOL n = NO;
NSLog(@"%d",n) ;
// output:
// 0


float

float f = 0.1f;
NSLog(@"%f",f) ;
// output:
// 0.100000


システム系

NSLog(@"__FILE__:%s", __FILE__);
NSLog(@"__PRETTY_FUNCTION__:%s", __PRETTY_FUNCTION__);
NSLog(@"__LINE__:%d", __LINE__);
// output:
// __FILE__:/Users/united4u/Desktop/iOS/projects/cnTest/cnTest/ViewController.m
// __PRETTY_FUNCTION__:-[ViewController btClick:]
// __LINE__:27


NSStringFrom系

NSLog(@"CGRect:%@", NSStringFromCGRect(self.view.frame));
NSLog(@"CGPoint:%@", NSStringFromCGPoint(self.view.frame.origin));
NSLog(@"CGSize:%@", NSStringFromCGSize(self.view.frame.size));
// output:
// CGRect:{{0, 20}, {320, 460}}
// CGPoint:{0, 20}
// CGSize:{320, 460}

これらを駆使して、効率よく開発を行いたいですね。