使いこなすと便利な文字列出力関数
普段はiOS Appばかり書いているのだけれど、たまにMac Appを書く機会がある。iOS Libraryとは勝手が違う部分のあるMac OS X Libraryに少々戸惑いつつも、本を読んだりネットで調べ物をしたりしながら書く。先日、参考にしていたソースコードでNSLogで出力する文字列を作成するのにNSStringFromPointという関数が使われているのを目にした。あれ、こんな便利な関数があっただろうか? と思ったら、どうやらiOS LibraryにはないがMac OS X Libraryには存在するという関数があるらしい。Mac Appを書くときには利用しよう。
Mac OS X 10.7 Core Library と iOS 5 Libraryの両方に存在
- NSString * NSStringFromClass(Class aClass);
- NSString * NSStringFromProtocol(Protocol *proto);
- NSString * NSStringFromRange(NSRange range);
- NSString * NSStringFromSelector(SEL aSelector);
Mac OS X 10.7 Core Libraryにのみ存在
- NSString * NSStringFromHashTable(NSHashTable *table);
- NSString * NSStringFromMapTable(NSMapTable *table);
- NSString * NSStringFromPoint(NSPoint aPoint);
- NSString * NSStringFromRect(NSRect aRect);
- NSString * NSStringFromSize (NSSize aSize);
自分で文字列出力関数を定義する
Mac OS X Libraryには存在していてiOS Libraryには存在していないような関数をデバッグ関数として使用したいのであれば、プリコンパイルヘッダで定義すればよい。『iOS SDK Hacks』のHACK#5「便利マクロ」が参考になる。
iOS SDK Hacks ―プロが教えるiPhoneアプリ開発テクニック
- 作者: 吉田悠一,高山征大,UICoderz
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/10/23
- メディア: 単行本(ソフトカバー)
- 購入: 28人 クリック: 465回
- この商品を含むブログ (31件) を見る
#ifdef DEBUG #define MyNSLogPoint(p) NSLog(@"{%f,%f}", p.x, p.y); #else #define MyNSLogPoint(p) ; #endif
追記(2012/05/17)
iOS Libraryにのみ存在する文字列出力関数を発見。NSStringFromPoint/Rect/Sizeの代わりになる関数があった。これは助かる。
- NSString * NSStringFromCGAffineTransform (CGAffineTransform transform);
- NSString * NSStringFromCGAffineTransform(CGAffineTransform transform);
- NSString * NSStringFromCGPoint(CGPoint point);
- NSString * NSStringFromCGRect(CGRect rect);
- NSString * NSStringFromCGSize(CGSize size);
- NSString * NSStringFromUIEdgeInsets (UIEdgeInsets insets);
- NSString * NSStringFromUIOffset(UIOffset offset);