swift - 为什么我在 viewDidLoad 中同步崩溃,有人知道发生这种情况的原因吗?
问题描述
class ViewController: UIViewController {
override func viewDidLoad() {
// Do any additional setup after loading the view.
DispatchQueue.main.sync { //this line crashes with Thread 1 : EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
print("Rohit Kumar")
}
}
}
在 viewDidLoad 中使用同步方法崩溃,但它与异步一起工作,我不知道这背后的原因,谁能帮助我。
我知道同步和异步之间的区别。
解决方案
当您sync
在主线程中使用时应用程序崩溃,默认情况下代码在主线程中运行,因此当您调度代码时,通常是在另一个队列而不是主线程本身中,这会导致队列停止并等待内部块{}
完成并且因为它的状态是停止/等待,那么块内的代码将不会运行,因此会出现死锁
推荐阅读
- microcontroller - 如何访问 Jamara 038300 qcr?
- python - 使用 Model @property 装饰器来检查 manytomany 的计数
- java - ObjectOutputStream 和 ObjectInputStream 结果不匹配
- javascript - 如何在 Python 中更新散景的 JavaScript 回调中的源?
- react-native - 反应本机日期选择器仅在调试模式下工作
- mysql - 在 JSON 字段的数组中搜索具有缺失属性的记录 (MySQL)
- python - **HTMLltestrunner 支持哪些版本的python**
- spring-amqp - spring-retry:长时间等待是否安全?(半小时等)
- php - 从 XAMPP 迁移到 Webhost
- python - PyTables/Pandas:在上下文中写入 HDFStore 是否安全?