NSLog にご用心

iPhone アプリでタッチイベントの座標を取ろうと思って、以下のようなコードを書いて確認してみました。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
	targetPoint = [[touches anyObject] locationInView:self.view];
	NSLog(@"%d", targetPoint.x);

しかし、コンソールをいくら覗いても返される値は0のまま。なぜに?と思ったら targetPoint.x の返り値は整数ではなく浮動小数点数値でした。
と、いうわけで上のコードはこれが正解。

NSLog(@"%f", targetPoint.x);

他にも Objective-C のオブジェクト全般の値を確認したいときにつかえる %@ という書式をプリミティブな型に指定すると問答無用で実行が終了するなど、正しい指定を行わないと思わぬ問題が発生する事があります。詳細は下記のサイトにまとまっているので、一度確認した方がよさそうです。

http://www.oomori.com/cocoafw/Foundation/NSLog/NSLog.html