最近Xcode升級(jí),之前的程序出現(xiàn)了一個(gè)控制臺(tái)打印問題
Main Thread Checker: UI API called on a background thread: -[UIApplication currentUserNotificationSettings]
PID: 1025, TID: 574783, Thread name: org.hxhg.jiguang.thread, Queue name: com.apple.root.default-qos.overcommit, QoS: 21
Backtrace:
4 Medically 0x00000001008d1490 -[JPUSHAPNSStateReport init] + 232
5 Medically 0x00000001008d5230 -[JPUSHClientController UDPReportAPNSState] + 44
6 Medically 0x00000001008d4ad8 -[JPUSHClientController setup] + 484
7 Foundation 0x000000018383fa50 <redacted> + 340
8 CoreFoundation 0x0000000182df8358 <redacted> + 24
9 CoreFoundation 0x0000000182df82d8 <redacted> + 88
10 CoreFoundation 0x0000000182df7b60 <redacted> + 204
11 CoreFoundation 0x0000000182df5738 <redacted> + 1048
12 CoreFoundation 0x0000000182d162d8 CFRunLoopRunSpecific + 436
13 CoreFoundation 0x0000000182d6512c CFRunLoopRun + 116
14 Medically 0x000000010089e6ec -[JPUSHThread clientThreadMain] + 100
15 Foundation 0x000000018383f860 <redacted> + 996
16 libsystem_pthread.dylib 0x0000000182a7c32c <redacted> + 308
17 libsystem_pthread.dylib 0x0000000182a7c1f8 <redacted> + 0
18 libsystem_pthread.dylib 0x0000000182a7ac38 thread_start + 4
上面的說的意思 程序需要在主線程執(zhí)行的代碼 被放在了子線程里邊
對(duì)于上面 的問題給出2種解決方案
第一種
- 在scheme 里邊(快捷鍵shift + command + <)取消主線程檢測(cè) (如下圖 不建議勾選) 或者修改代碼 把出問題的代碼放在主線程里邊,我這里是跟推送有關(guān)系,第二種方法會(huì)講到
屏幕快照 2017-10-12 下午4.54.59.png
第二種
- 我這里說的是跟推送通知有關(guān)系,在升級(jí)到Xcode9之后才出現(xiàn)的上面問題,采用的方法升級(jí)推送框架,不會(huì)出現(xiàn)上面的控制臺(tái)打印問題