iOS-Xcode9出现Main Thread Checker: UI API called on a background thread:问题

最近Xcode升级,之前的程序出现了一个控制台打印问题

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  + 340
8   CoreFoundation                      0x0000000182df8358  + 24
9   CoreFoundation                      0x0000000182df82d8  + 88
10  CoreFoundation                      0x0000000182df7b60  + 204
11  CoreFoundation                      0x0000000182df5738  + 1048
12  CoreFoundation                      0x0000000182d162d8 CFRunLoopRunSpecific + 436
13  CoreFoundation                      0x0000000182d6512c CFRunLoopRun + 116
14  Medically                           0x000000010089e6ec -[JPUSHThread clientThreadMain] + 100
15  Foundation                          0x000000018383f860  + 996
16  libsystem_pthread.dylib             0x0000000182a7c32c  + 308
17  libsystem_pthread.dylib             0x0000000182a7c1f8  + 0
18  libsystem_pthread.dylib             0x0000000182a7ac38 thread_start + 4

上面的说的意思 程序需要在主线程执行的代码 被放在了子线程里边

对于上面 的问题给出2种解决方案


第一种
  • 在scheme 里边(快捷键shift + command + <)取消主线程检测 (如下图 不建议勾选) 或者修改代码 把出问题的代码放在主线程里边,我这里是跟推送有关系,第二种方法会讲到
iOS-Xcode9出现Main Thread Checker: UI API called on a background thread:问题_第1张图片
屏幕快照 2017-10-12 下午4.54.59.png
第二种
  • 我这里说的是跟推送通知有关系,在升级到Xcode9之后才出现的上面问题,采用的方法升级推送框架,不会出现上面的控制台打印问题

你可能感兴趣的:(iOS-Xcode9出现Main Thread Checker: UI API called on a background thread:问题)