この出力、実はリリース用ビルドしてもそのまま見えています。
コンソール出力の見方は次の通り。
(Xcode4の場合)iOSデバイスをMacに接続する>「Organizer」を開く>「Devices」タブを選択>該当デバイスを選択>「Console」を選択>iOSデバイス上で、適当なアプリを操作
※AppStoreにリリースされているアプリをこの方法で確認してみると、コンソール出力を隠していないものが多数あるようです。
では、リリース時にNSLog()のコンソール出力を消す/隠すにはどうしたらよいか。
一番愚直なのはNSLog()をコメントアウトですが、すでにソースコード上に多数ある場合は面倒です。
検索すると、マクロを定義して何とかするというのが一般的のようですね。
ざっと見ていると、いくつか方法があるようでした:
・フラグをどうするか: DEBUG_MODE, NS_BLOCK_ASSERTIONS など
・ログ用関数はどうするか: NSLogを使う or DLogのような自作関数を使う
私の場合は、
・すでにコード上にNSLog関数をたくさん埋め込んでいる→NSLogはそのままがいい
・同じくデバグ用に使うNSAssertについては、とりあえずおいておく(参考:NSLogとNSAssertの無効化)
・できるだけ手数の少ない方法
といった怠惰な理由で次の方法をとりました。
#ifndef __OPTIMIZE__ #define NSLog(...) NSLog(__VA_ARGS__) #else #define NSLog(...) {} #endif※引用元: Removing NSLogs on Release Builds
このコードを「アプリ名_Prefix.pch」に追加するだけです。
その他のファイル(プロジェクトファイル)などの編集は不要です。
ちなみに、「__OPTIMIZE__」というフラグは、リリース用ビルドでデフォルトで定義されているものです。
0 件のコメント:
コメントを投稿