2011-09-18 4 views
6

多くのNSLog()呼び出しがアプリのパフォーマンスやメモリに影響するかどうかを知りたいです。 誰もそのようなことについて知っていますか?iPhone/iPad:多くのNSLog()呼び出しがアプリの性能やメモリに影響しますか?

クラッシュログの後に問題が表示されるように、アプリケーションのすべての機能(多くは)にNSLog()コールを入れたいとします。

ありがとうございました。

答えて

10

はい。だから私はこれを私のpchファイルで定義します。

#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__); 

NSLogを使用する代わりに、私はDLogとALogを使用します。

(注または著作権:私は覚えていない他のいくつかのSOポストから長い長い前にこのコードを持って、私のスニペットライブラリからそれを再度貼り付け)

+0

はい、デバッグ用のコードに残すことを期待しNSLogsのために、あなたは「デバッグ」のものが出てコンパイルすることを可能にするマクロを定義する必要があります。もちろん、それらは常に別のマクロを使用するように、常にログに記録する必要があります。 '__PRETTY_FUNCTION__'と' __LINE__'を追加することで、コード内のどこにいるかを明示的に特定する必要がなくなります。 (どこに送信されたかについての手がかりがない「エラーがありました」というメッセージよりも役に立たないものはありません) –

+0

これは、そのアイデアの起源であると思われます。 //iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog – benvolioT

2

はい、パフォーマンスが低下します。特に、機能が非常に短い時間がかかると思われる場合は、NSLog(I/Oプロセス)は予想よりも時間がかかります。

7

「未定義」へのもう一つの簡単な解決策をのNSLog

.PCHファイルで

#ifndef DEBUG 
#define NSLog(...) /* */ 
#endif 
関連する問題