Xcode中的NSLog停止工作

5
我遇到一个奇怪的问题,可能是一个bug。我的NSLog语句完全停止工作了,即使在view did load、application didfinishlaunching等方法中也无法打印。它们全部变成了棕色(与xcode中的pragma mark相同的颜色),并且都有一个警告:'expression result unused'。有人以前见过这种情况吗?我应该怎么办?我正在使用xcode 4.0.2。

非常感谢!

Jules


1
你试过关闭并重新打开Xcode吗?它有时会变得疯狂... - marzapower
2
Xcode 4.0.2确实有点小问题,但是你确定它没有被重新定义吗?你可以尝试使用cmd+点击NSLog来查看是否会导致任何“非标准”的定义... - André Morujão
尝试重新启动Xcode,重新启动计算机,也没有非标准定义。我很困惑? - Jules
1
我不知道发生了什么,但这里有一些想法。在工作区中执行编辑>查找(⇧⌘F),查找“#define NSLog”,以查看是否在其他地方重新定义了NSLog。NSLog的XCode控制台部分只是一个fprintf,除非它被重新定义或使用freopen重定向,否则没有理由停止工作。expression result unused部分的意思就是它所说的,常见原因是使用类似于*var++而不是(*var)++的东西。 - Jano
1
我认为它不应该在那里(除非它现在是Xcode代码模板的一部分?),但无论如何,我猜想这样做的目的是当代码进入生产环境时,如果你留下任何NSLog调用,它们基本上会被删除(因为将NSLog定义为“nothing”所做的就是这个)。个人而言,我更喜欢使用自己的日志宏,并通过我的调试配置中的DEBUG预处理器宏来控制它。请参见:http://iphoneincubator.com/blog/debugging/the-evolution-of-a-replacement-for-nslog - André Morujão
显示剩余2条评论
8个回答

7

为了完整起见,我遇到了同样的问题,答案是不同的,希望能帮助其他遇到这个帖子的人:

我有一个框架(亚马逊的一个),重新定义了NSLog,在那里(Cmd+点击棕色的NSLog)并注释掉了重新定义...


6
实际问题是设置了release_build 为1。所以它不能识别nslog,就像你说的它是为发布版本设置的。

那你在哪里修改了这个? - Marc Alexander

2

我曾经遇到同样的问题:

以下是解决方法:

  • 删除派生数据文件夹
  • 删除派生数据后执行“清理”操作(您可以在产品菜单中看到此选项)

  • 退出Xcode并重新启动。

这个方法很有效,我的所有NSLog都能正常工作。

希望对你有所帮助。


1
  1. 确保所选方案对应于调试模式,因为有时pch文件可能具有某些定义,仅在调试模式下进行日志记录 (方案位于选择iPhone模拟器/ iOS设备的位置左侧)

  2. 在视图中选择调试区域 (Xcode右上角有3个视图按钮,请按中间按钮)

  3. 选择“显示变量视图和控制台” (在调试区域(底部)有3个按钮,请按中间按钮)


0

尝试将控制台底部的下拉菜单更改为“所有输出”。

Screenshot


0

我曾经遇到过同样的问题,问题在于我正在构建一个Ad Hoc版本(模式是为Ad Hoc构建的)。当我构建调试版本时,警告消失了。


0

如果您正在使用像'KScan'、'iKEA'或'kdc-scan'这样的库,那么它们可能会调用像'redirectNSLogToDocuments'这样的方法。

在我的情况下,'iKEA'的对象调用了方法'CheckIfDeviceConnected',这个方法将所有nslog输出重定向到文档中。注释掉后,所有的nslogs都可以正常工作:)

希望这对某些人有用。


-1
一些步骤:-
1)“清除所有目标”或删除您的构建并重新构建。
2)如果步骤1不起作用,请重新安装Xcode。

谢谢你的帮助,当你说删除构建时,你是指什么? - Jules

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接