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 <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

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

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


第一种
  • 在scheme 里边(快捷键shift + command + <)取消主线程检测 (如下图 不建议勾选) 或者修改代码 把出问题的代码放在主线程里边,我这里是跟推送有关系,第二种方法会讲到
屏幕快照 2017-10-12 下午4.54.59.png
第二种
  • 我这里说的是跟推送通知有关系,在升级到Xcode9之后才出现的上面问题,采用的方法升级推送框架,不会出现上面的控制台打印问题
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容