Xcode8 のベータ版を使用して Objective-C/iOS プログラムのデバッグを行う際、NSLog がログを出力できず、以下の内容が出力されます: subsystem: com.apple.BaseBoard, category: MachPort, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
subsystem: com.apple.FrontBoard, category: Common, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
同じ Objective-C/iOS コードが Xcode7 版では正常に出力されており、問題は発生していません。
Apple の公式フォーラムでも Xcode8 ベータのバグが提起されています https://forums.developer.apple.com/thread/49136
公式の説明は最新の Xcode のバグであり、その後、Xcode8 ベータ 2 で解決されたようです。
Resolved in Xcode 8 beta 2 – IDE
Debugging
Simulator でアプリをデバッグする際、ログが表示されます。 (26457535)
その後、Xcode8 ベータ 4 でも再度解決されました。辛いですね。
Known Issues in Xcode 8 beta 4 – IDE
Debugging
Xcode デバッグコンソールは、Simulator でアプリケーションをデバッグする際にシステムフレームワークからの追加のログを表示します。 (27331147, 26652255)
StackOverflow では、ログを出力する際にログの最前方に特殊文字(例えば‘^’)を追加することで問題が解決できると提案されています。Xcode8 で実際に効果がありました。
出力形式
// worked in Xcode8 beta
NSLog(@"^ Test Log")
一度で済むように、私たちは NSLog を DLog と ALog として定義しましょう。
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"^ %s line %d " fmt), \_\_PRETTY\_FUNCTION\_\_, \_\_LINE\_\_, ##\_\_VA\_ARGS\_\_);
#else
# define DLog(...)
#endif
#define ALog(fmt, ...) NSLog((@"^ %s line %d " fmt), \_\_PRETTY\_FUNCTION\_\_, \_\_LINE\_\_, ##\_\_VA\_ARGS\_\_);
参考 http://stackoverflow.com/questions/37800790/hide-xcode-8-logs