xcodeでデバッグログを出力するときは普通NSLog()を使うのだが、これが結構重たい上、Releaseビルドでも出力されてしまうのでどうしたもんかと思っていたのだが、設定とマクロでうまくできるのがわかったのでメモ。
プロジェクトの設定を開く。構成でDebugを選択
左下のボタンを押してユーザー定義の設定を追加
GCC_PREPROCESSOR_DEFINITIONSを追加し、DEBUGを設定する

以下のマクロを、インクルードされるヘッダに定義する
#ifdef DEBUG # define TRACE(fmt, ...) NSLog((@"%s(%d) " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); #else # define TRACE(...) #endif
ログを出力したい場所で以下の様に使う
TRACE("startDownload genre=%@",genreId);
出力結果
2009-04-16 18:57:18.519 Beatport[14249:20b] -[TrackListViewController startDownload:](76) startDownload genre=10
「オブジェクト名 メソッド名(行番号) ログ」
という形式で出力される。マクロを以下の様に変更するにすると、ファイル名(行番号)で出力される
# define TRACE(fmt, ...) NSLog((@"%s(%d) " fmt), __FILE__, __LINE__, ##__VA_ARGS__);
出力結果
2009-04-16 19:01:19.699 Beatport[14317:20b] 2009-04-16 19:01:45.633 Beatport[14317:20b] /Users/takatronix/Documents/Beatport/Classes/TrackListViewController.m(76) startDownload genre=10
tAkatronixおすすめのiPhone開発本
ソフトバンククリエイティブ
売り上げランキング: 84906
ソフトバンククリエイティブ
売り上げランキング: 4163
リックテレコム
売り上げランキング: 3089
ソフトバンククリエイティブ
売り上げランキング: 22615














[iPhone]高精度タイマーの使い方 NSTimeInterval
Photo Album