banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

Xcode8ベータ版では、NSLogの出力ができない問題があります。

Objective-C/iOS プログラムのデバッグに Xcode8 のベータ版を使用すると、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 beta のバグが報告されています https://forums.developer.apple.com/thread/49136

公式の説明では、最新の Xcode のバグだと言われており、Xcode8 beta 2 では解決されたようです。

Xcode 8 beta 2 で解決済み – IDE
デバッグ
シミュレータ上でアプリをデバッグすると、ログが表示されます。 (26457535)

しかし、Xcode8 beta 4 では再び問題が発生しています。本当に困ります。

Xcode 8 beta 4 の既知の問題 – IDE
デバッグ
シミュレータでアプリをデバッグすると、Xcode のデバッグコンソールにシステムフレームワークからの余分なログが表示されます。 (27331147, 26652255)

StackOverflow では、ログを出力する際に先頭に特殊文字(例:'^')を追加することで問題が解決するという提案があります。Xcode8 で確認済みです。

出力形式

// Xcode8 beta で動作
NSLog (@"^ テストログ")

一度解決すればよいので、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

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。