From the daily archives: 木曜日, 9月 1, 2011

UIViewやUIImageなどを扱う時、よくCGRectやCGSizeをLogに書きだしたりしたくなることがあります。
そんなとき、毎回
[objc]
NSLog(@"rect : %f %f %f %f",rect.origin.x,rect.origin.y,rect.size.width,rect.size.height);
[/objc]
と書くのはかなり手間です。
文字が長いので、書くだけで気合いを使い果たしてしまいそうです。

マクロで定義しちゃえば簡単に書けるようにはなりますが、あまりマクロに詳しくない人もいると思います。
そこで、Appleが準備しているほうのマクロを紹介しようと思います


■NSStringFromXXXマクロ

NSStringにはNSStringFromXXXといったタイプのマクロがあります。
これらを使うと、
[objc]
NSLog(@"rect : %@", NSStringFromCGRect(rect));
[/objc]
と書けるようになります。

前と比べれば書く量が半分以下ですし、補完で一発なのでだいぶ楽になると思います。

NSStringFromXXXのマクロは次の9種類があります

  • NSStringFromCGAffineTransform
  • NSStringFromCGPoint
  • NSStringFromCGRect
  • NSStringFromCGSize
  • NSStringFromClass
  • NSStringFromProtocol
  • NSStringFromRange
  • NSStringFromSelector
  • NSStringFromUIEdgeInsets

ちなみにこれらのNSStringFromXXXでNSStringに変換したものはXXXFromStringで逆変換ができます。

ちょっとしたことですが、使用頻度が高いと思いますのでぜひ使ってみてください。