1

重複の可能性:
本番コードで NSLog() を使用してはならないというのは本当ですか?
アプリケーションをリリースする前に NSLog を無効にする必要がありますか?

リリース ビルド中にプロジェクトに存在するすべての NSLOG を削除する必要があります。以下のコードを使用してみましたが、電話でビルドにアクセスしてもコンソールに NSLOG が表示されます。

#ifdef DEBUG
#define debug_NSLog(format, ...) NSLog(format, ## __VA_ARGS__)
#else
#define debug_NSLog(format, ...)
#endif
4

3 に答える 3

13

NSLog を単純に削除するには:

#define NSLog(s,...)

#define置換が指定されていないAは、何も置換せず、それに一致するものをすべて削除し#defineます。これは、単純なトークンの定義と、上記のような関数のような定義で機能します。

于 2012-10-09T11:11:58.220 に答える
4

次のコードを使用します

#ifdef DEBUGGING
# define DBLog(fmt,...) NSLog(@"%@",[NSString stringWithFormat:(fmt), ##__VA_ARGS__]);
#else
# define DBLog(...)
#endif 

コンパイラ フラグが正しく設定されていることを確認します。

また、コンソールを確認したときに、リリースモードを使用しているかどうかを確認しましたか?

于 2012-10-09T11:03:05.147 に答える
1

これを使って

#if TARGET_IPHONE_SIMULATOR
#define NSLog(fmt,...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#define NSLog(...)
#endif

NSLogシミュレーターで実行している場合、これが出力されます。

于 2012-10-09T11:10:07.170 に答える