当运行我的应用程序时,我有时会在Xcode 8b3的日志中得到这条消息,一切似乎都正常工作,但我想知道这是从哪里来的。谷歌一点用都没有。
它来自+[UIWindow _synchronizeDrawingAcrossProcessesOverPort:withPreCommitHandler:]通过os_log API。它不依赖于你正在使用的其他组件/框架(只来自UIKit) -它在改变界面方向时在干净的单视图应用程序项目中再现。
+[UIWindow _synchronizeDrawingAcrossProcessesOverPort:withPreCommitHandler:]
该方法由两部分组成:
当第二部分失败时(看起来像禁止转换),它将上面的消息打印到错误日志。 但是,我认为这个问题不是致命的:这个方法中还有2个额外的assert情况,这将导致调试时崩溃
看来我们只能用雷达了。
尝试在run(debug)下的方案的environment variables中放入以下内容
run(debug)
environment variables
OS_ACTIVITY_MODE = disable
在你的Xcode:
这也将禁用在真实设备中调试的能力(从那时起没有来自真实设备的控制台输出)。
为了解决这个问题,我从模拟器中删除了应用程序。
我还首先运行了清洁。
我不认为这是和迎新工作有关的。在出现这种症状之前,最大的变化是Swift框架开始在工作线程而不是主线程上调用NSLog。
NSLog
我们可以这样静音(设备和模拟器需要不同的值):
添加名称OS_ACTIVITY_MODE和值${DEBUG_ACTIVITY_MODE}并检查它(在Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment中)。
OS_ACTIVITY_MODE
${DEBUG_ACTIVITY_MODE}
添加自定义设置DEBUG_ACTIVITY_MODE,然后为Debug添加Any iOS Simulator SDK,并将其值设置为disable(在Project ->构建设置-> + ->自定义设置中)
DEBUG_ACTIVITY_MODE
Debug
Any iOS Simulator SDK
disable