Xcode9:Main Thread Checker: UI API called on a background thread

1、问题描述:Xcode9 运行会打印一些线程的日志,比如下面这些

Main Thread Checker: UI API called on a background thread: -[UIView setHidden:]
PID: 31062, TID: 6628490, Thread name: (none), Queue name: com.apple.root.default-qos.overcommit, QoS: 21
Backtrace:

2、问题原因:Xcode9新增加了Main thread checker的机制,当需要在主线程中执行的而没有放在主线程,会给出提示,典型的就是UI。

3、问题解决:
最直接的就是关掉这个功能,不勾选下图红色框的选项。烦倒是不会了,但是还是不建议这样子做,万一真的有哪些是需要在主线程完成的工作而没有做导致crash就悲剧了

关闭检查开关

所以呢,还是勾选上好,有问题一个一个解决掉,勾选上之后,有问题的代码行就会被定位

打开断点调试开关
dispatch_async(dispatch_get_main_queue(), ^(void) {  
      //todo
    });

推荐阅读更多精彩内容