ログ出力用マクロ
下記のような有名なログ出力マクロがありますが、
#ifdef DEBUG # define LOG_CURRENT_METHOD NSLog(@"%@/%@", NSStringFromClass([self class]), NSStringFromSelector(_cmd)) #else # define LOG_CURRENT_METHOD ; #endif
これプラスアルファでちょっと便利なマクロをご紹介します。
下記マクロを定義して、
#ifdef DEBUG # define LOG_CURRENT_LINE(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); #else # define LOG_CURRENT_LINE(...) #endif
たとえばこのようにマクロを実行すると、
LOG_CURRENT_LINE(@"test");
こんな感じでクラス名、メソッド名、コード内の何行目か、が出力されます。
-[ViewController hoge:] [Line 542] test
__PRETTY_FUNCTION__ という定義済み変数はクラス名とメソッド名を、
__LINE__ という定義済み変数は行数を保持しているようです。