【发布时间】:2018-03-05 23:09:32
【问题描述】:
This 看起来很有希望,但似乎不是一个重复的问题,因为它解决了 Swift 中的问题。
我正在完成一个现有的 Objective C 项目,但当我更新到 Xcode 9 时,NSLog 消失了。所以我正在 Xcode 中寻找一些设置,让我继续使用 NSLog 来微调项目。
由于NSLog 消息不再出现在调试区域中,因此在 Xcode 9 中使用 Swift 和 Objective-C 应用程序的日志记录的基本调试似乎发生了变化。设置 DEBUG=1 的窗口不再看起来像 Figure 2 The DEBUG preprocessor macro setting in an Xcode project.
例如,我想使用 Xcode9 在 Debug 区域显示此字符串消息。
NSString *outputData = @"This should show in Debug area";
NSLog( @"text: %@", outputData );
我研究了最新的文档here 或here,但到目前为止还没有帮助。还可能值得注意的是,以前当我运行项目时,调试区域会自动打开。自从安装了Xcode9,它就不再那样做了。
希望下面编辑中提供的额外信息会向我尚未查看的人提出建议。谢谢。
编辑 1
在控制台区域 - 即调试区域的右下部分 - 我选择了 All Output。所以我尝试使用 Debugger output 和 Target output 但仍然没有日志。
我在Prefix.pch 文件中添加了这些语句
#ifndef DEBUG
#define NSLog(...) /* suppress NSLog when in release mode
#endif
当我运行代码时,问题导航器中出现以下内容。
Unused variable 'outputData'
编辑 2
在 Xcode9 中设置 DEBUG=1 的位置似乎不同(参见下面)。
我使用几个 SO 帖子here、here、here(都很老)和even here(确保更改 MyLog返回 NSLog)。在每种情况下,我都能够在问题导航器中报告相同的问题,但在调试控制台中却从来没有。 here 通过将文件复制到新项目中解决了类似的问题(Xcode5),但我想避免这种情况。
我几乎完成的应用程序到目前为止还不需要处理统一日志记录试图解决的任何复杂问题。但我在统一日志中观看了2016 WWDC video,并通读了它的幻灯片文件,寻找如何使用适当的 API 做一些基本操作的示例 - 将NSLog 实时打印到控制台区域 - 就像我在安装之前所做的那样Xcode9.这可能是错误的方法。但我想不出更好的方法。
编辑 3
值得注意的是,当我使用Xcode9创建一个新的Objective C项目并运行上面的代码时,Console区域出现了字符串消息。
换句话说,使用 Xcode9,新的日志记录 API确实与 NSLog, 一起工作,但仅适用于新项目,而不适用于使用早期版本的 Xcode 创建的项目。
启用 DEBUG 预处理器宏
【问题讨论】:
-
我可以像以前一样在 XCode 9 中看到日志。您是否尝试过使用示例 prj?
-
Swift: print() vs println() vs NSLog() 的可能重复项。不完全是重复的。但是接受的答案涵盖了您所要求的所有内容以及更多内容!
-
我不确定您所说的示例项目是什么意思。我正在尝试使用用于在调试区域中生成大量日志的现有项目。尽管无论我使用模拟器还是设备,这个项目都在继续构建和运行,但这些现在已经完全消失了。
-
在 Xcode 9 控制台中,有一个小选择器可以选择“所有输出”、“调试器输出”和“目标输出”。你选择了哪个?另外,您说设置“DEBUG = 1”的位置看起来不像那个技术说明,但它在 Xcode 9 中对我有用。编辑您的问题以包括屏幕快照。 (顺便说一句,这仅在您使用“#if DEBUG` 模式时才相关。)底线,我无法重现您描述的行为,所以我建议您识别 the steps necessary for us to create blank project and reproduce the problem you describe。
-
Rob,看看我的最新编辑。
标签: ios objective-c xcode xcode9