最初のiPhoneアプリを提出しようとしています。
アプリケーションをテストおよびデバッグするために、多くのNSLogステートメントを配置しました。
だから私の質問は「NSLogステートメントをソースコードに残しても大丈夫ですか」です
そして、nslogステートメントが合計実行時間を遅くするかどうか疑問です。
ありがとう。
私はこれをいつも使っていました(どこかで見つけました):
// DLog is almost a drop-in replacement for NSLog to turn off logging for release build
//
// add -DDEBUG to OTHER_CFLAGS in the build user defined settings
//
// Usage:
//
// DLog();
// DLog(@"here");
// DLog(@"value: %d", x);
// Unfortunately this doesn't work DLog(aStringVariable); you have to do this instead DLog(@"%@", aStringVariable);
//
#ifdef DEBUG
# define DLog(__FORMAT__, ...) NSLog((@"%s [Line %d] " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
#else
# define DLog(...) do {} while (0)
#endif
// ALog always displays output regardless of the DEBUG setting
#define ALog(__FORMAT__, ...) NSLog((@"%s [Line %d] " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
Facebook の three20 プロジェクトには、デバッグまたはログ記録のより複雑な方法があります。
私が以前取り組んでいたアプリには、コンソールにデバッグをダンプする多くの NSLogs がありました。iPhone 3G ではパフォーマンスが大幅に低下することがわかりました。パフォーマンスの低下は 3GS で顕著でしたが、それほどではありませんでした。
私のアドバイスは、プリプロセッサ マクロとデバッグ プリプロセッサ定義を使用して、リリース ビルドではなくデバッグ ビルドで条件付きで NSLogs を使用することです。
AppStore にある 3 つのアプリには NSLogs が読み込まれているので、大丈夫だと思います...
私は私のものを取り除いたことはありません:)
一部の人々は、条件付きコンパイル/コンパイラ マクロを推奨しているため、NSLog をまったく使用せずにビルドを作成できますが、それは報酬がほとんどないのに労力がかかりすぎると思います。
ただし、NSLogs はアプリの速度を (わずかに) 低下させるため、パフォーマンスに直接影響を与えるものはすべて削除します。また、アプリの実装方法などを非表示にするために、一部のデバッグ ログ情報を削除することもできます。
お役に立てば幸いです。
サム
XCode4 は、これに対する非常に優れた解決策を提供します - ブレークポイントを使用します。アクション「メッセージをログに記録」を選択し、メッセージとしてval = @val@を設定し、「アクションの評価後に自動的に続行」ボックスにチェックマークを付けます。
すべてのユースケースに適合するわけではありませんが、値を簡単に「検査」できるという利点があり、値がリリースされないことを保証します。
userPrefs(plist)に格納されている0または1に設定された「useDebugMode」シングルトンintを使用するだけです。また、iPhoneのUUIDに応じて、設定画面に「デバッグモードの使用:オン/オフ」トグルを追加して、将来的に製品版で問題をデバッグできるようにします。これにより、将来、プログラムの問題について不満が出た場合に、(ダウンロードしたXMLを使用して)データの問題をデバッグできます。次に、すべての「NSLog」と「printf」を
if (useDebugLog == 1)
{
NSLog(@"debug statement");
}
これは私にとってはうまくいきます...もちろん、:
if (useDebugLog == 1)
私が対処したいと思っているオーバーヘッドが発生します。
リリースで NSLog を使用することの問題ではありません。しかし、貴重なデータをログに記録すると、他のユーザー (開発者) がそのデータを見ることができます。いくつかのダウンロードリンクなどのように..