这个是什么错误呀?每次编译的时候。都会卡一下。是哪个地方的线程设置的有问题吗? Main Thread Checker: UI API called on a background thread: -[UIApplication delegate] PID: 2610, TID: 1311879, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
问题描述: 您遇到的错误信息是 "Main Thread Checker: UI API called on a background thread",具体为 -[UIApplication delegate] PID: 2610, TID: 1311879, Thread name: (none), Queue name: com.apple.root.default-qos, QoS: 0
。这表明您的应用程序尝试在后台线程上执行了应仅在主线程上执行的UI相关API调用。
可能原因:
解决步骤:
-[UIApplication delegate]
),确认其是否被不当调用在后台线程。dispatch_async(dispatch_get_main_queue(), ^{ /* UI相关代码 */ });
示例代码调整(基于问题描述): 假设错误源于请求通知权限的回调执行在了非主线程,正确的做法是将注册远程通知的代码包裹在主线程的队列中执行,如下所示:
_notificationCenter.requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
if let error = error {
print("Error requesting authorization for notifications: \(error)")
return
}
if granted {
print("User authorized notifications.")
DispatchQueue.main.async {
application.registerForRemoteNotifications()
}
} else {
print("User denied notification permission.")
}
}
通过上述步骤,您可以定位并修正导致该错误的线程设置问题,确保UI操作遵循正确的线程规则,从而避免编译时的卡顿现象及运行时的异常。