banner
李大仁博客

李大仁博客

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

Xcode8 beta版无法输出NSLog问题

使用 Xcode8 的 Beta 版本进行 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 版本输出正常,没有出现。

苹果的官方论坛也有人提了 Xcode8 beta 的 Bug https://forums.developer.apple.com/thread/49136

官方的解释是最新的 Xcode 的 BUG, 然后,在 Xcode8 beta 2 中貌似解决了。

Resolved in Xcode 8 beta 2 – IDE
Debugging
When debugging an app on the Simulator, logs are visible. (26457535)

然后,在 Xcode8 beta 4 中又要解决了一遍。伤不起啊。

Known Issues in Xcode 8 beta 4 – IDE
Debugging
Xcode Debug Console shows extra logging from system frameworks when debugging applications in the 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

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.