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