1. ホーム
  2. objective-c

[解決済み] メソッド名と行番号を出力し、NSLogを条件付きで無効にする方法は?

2022-03-21 18:49:52

質問

Xcodeでのデバッグについてプレゼンをしているのですが、NSLogを効率的に使うための情報を得たいのです。

特に、2つの質問があります。

  • は、現在のメソッドの名前/行番号を簡単にNSLogする方法はありますか?
  • リリースコード用にコンパイルする前に、すべてのNSLogを簡単に無効化する方法はありますか?

解決方法は?

私がよく使うNSLog周辺の便利なマクロを紹介します。

#ifdef DEBUG
#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
#else
#   define DLog(...)
#endif

// ALog always displays output regardless of the DEBUG setting
#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)

DLog マクロは、変数 DEBUG が設定されているときのみ出力するために使用します (プロジェクトの C フラグの -DDEBUG は、デバッグコンフィギュレーション用です)。

ALogは常にテキストを出力します(通常のNSLogと同様です)。

出力(例:ALog(@"Hello world") )は、次のようになります。

-[LibraryController awakeFromNib] [Line 364] Hello world