iOS 10不打印NSLog

Xcode 8.0 beta(8S128d)上的NSLog没有打印。 printf不变

这是我的代码:

 NSLog(@"hello from NSLog"); printf("hello from printf"); 

以下是iOS 9模拟器上的输出:

 2016-06-17 09:49:10.887 calmapp-dev[28517:567025] hello from NSLog hello from printf 

以下是iOS 10模拟器上的输出:

 hello from printf 

可能是因为在Scheme环境variables中添加了属性“OS_ACTIVITY_MODE”:“disable”(为了隐藏模拟器的OS输出)而忘了它,现在正在真实的设备上运行。

在Xcode 8中:

 Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables 

只添加OS_ACTIVITY_MODE并检查它(不要添加一个值)

在这里输入图像说明

在这里输入图像说明

总结:这是Xcode 8 + iOS10的一个bug,我们可以这样解决:

  • 当使用模拟器时,添加名称“OS_ACTIVITY_MODE”和值“禁用”并检查它。

  • 在真实设备上时,只能添加“OS_ACTIVITY_MODE”并检查它(不要添加值)。 您将在Xcode8控制台中看到NSLog。

如果您检查Xcode 8 beta发行说明 ,您会发现它说:

debugging在Simulator上运行的应用程序时,日志可能在控制台中不可见。 解决方法:使用命令+ /在Simulator.app中打开控制台应用程序中的系统日志以查看NSLog。 (26457535)

NSlog或打印实际上是执行,但隐藏在许多其他控制台debugging输出,以解决这个问题Open Xcode8:

 Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables 

添加“OS_ACTIVITY_MODE”并将值设置为“禁用”并检查它。

点击closures

在这里输入图像说明 在这里输入图像说明

我真的不能在真正的iOS 10设备中看到NSLog输出。 如果您使用的是真实设备,则可以从Xcode(Shift + Command + 2)中打开设备窗口并查看设备日志,但由于控制台显示来自系统和所有应用程序的日志,因此很难查看应用程序的日志。

(我使用Xcode 7,所以它可能不是Xcode的问题,但iOS 10的问题)

嗯…它看起来像属性“OS_ACTIVITY_MODE”:“禁用”阻止NSlog出现在Xcode 9日志。

取消选中我的scheme中的这个值恢复了我的日志。

另外,确保控制台在Xcode中实际上是可见的(例如,确保右侧的图标以蓝色突出显示,如下图所示)。 升级Xcode后,它隐藏控制台,并显示我只是variables视图。 这使得它看起来像NSLog()不能正常工作,而它确实工作正确,我只是看不到输出。

在这里输入图像说明

我使用Xcode 8,所以我也遇到了同样的问题。 我通过在模拟器上添加value = disable来解决了这个问题,但是在真正的机器上我没有增加价值。

接受的答案最初给了我一种显示NSLog消息的输出的方式,但是在升级到Xcode 9.1 + iOS 11.1之后,它不再有效。 不过,我可以通过启用模拟器来使用控制台应用程序再次显示debugging消息( 请参阅卢卡斯的答案 )。

在控制台应用程序中,我select了Include Debug Messages Product -> Scheme.下的Include Debug Messages Product -> Scheme. 我也不得不取消selectInclude Info Messages这样控制台就不会被系统消息所淹没。