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

探讨Xcode升级后出现的主线程控制台打印问题,提供两种解决方案:一是取消主线程检测,二是升级推送框架。文章针对iOS开发中遇到的主线程调用问题给出实用建议。

最近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
  1. 上面的说的意思 程序需要在主线程执行的代码 被放在了子线程里边

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


第一种

  • 在scheme 里边(快捷键shift + command + <)取消主线程检测 (如下图 不建议勾选) 或者修改代码 把出问题的代码放在主线程里边,我这里是跟推送有关系,第二种方法会讲到

第二种

  • 我这里说的是跟推送通知有关系,在升级到Xcode9之后才出现的上面问题,采用的方法升级推送框架,不会出现上面的控制台打印问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值