iPhoneのデバッグログの改善
iPhoneの開発用のログはたいていNSLogで出力するわけですが、リリースの時には抜きたかったりするので、個別にdefineで切り分けたりしておくのが通常の方法だと思いますが、下記の仕組みでは、デバッグとリリースの切り分けだけでなく、ログにクラスと関数名も出力してもらえます。
http://www.cimgf.com/2010/05/02/my-current-prefix-pch-file/
やりかたは簡単。
プロジェクト→プロジェクト設定を編集→ビルド
でその他のCフラグに-DDEBUGを追加
その後、XXX_Prefix.pchに以下の行を追加すればOK
#ifdef DEBUG #define DLog(...) NSLog(@"%s %@", __PRETTY_FUNCTION__, [NSString stringWithFormat:__VA_ARGS__]) #define ALog(...) [[NSAssertionHandler currentHandler] handleFailureInFunction:[NSString stringWithCString:__PRETTY_FUNCTION__ encoding:NSUTF8StringEncoding] file:[NSString stringWithCString:__FILE__ encoding:NSUTF8StringEncoding] lineNumber:__LINE__ description:__VA_ARGS__] #else /* DEBUG */ #define DLog(...) do { } while (0) #ifndef NS_BLOCK_ASSERTIONS #define NS_BLOCK_ASSERTIONS #endif #define ALog(...) NSLog(@"%s %@", __PRETTY_FUNCTION__, [NSString stringWithFormat:__VA_ARGS__]) #define ZAssert(condition, ...) do { if (!(condition)) { ALog(__VA_ARGS__); }} while(0) #endif /* DEBUG */
NSLogをDLogに置き換えます。あとはALog,ZAssertというAssert系のものが利用可能です。