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
});