使用 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