我的应用程序不断随机崩溃
我想谈谈每个新开发人员都会遇到的最烦人的事情,这确实让我浪费了数小时甚至数天的时间来试图理解为什么我的应用程序总是随机崩溃。
作为一个懒惰的开发人员,我不只是去阅读我将要集成到我的项目中的这个新东西的所有文档,我只是去开始编码,认为如果它在我的机器上工作,那么它必须在每个人的机器上工作。
在我开始使用 Coredata 之前,我的工作效率一直很高,但我的工作效率开始直线下降。我们的应用程序每分钟都会随机崩溃,我看不出崩溃的原因。我跑到 XCode 的崩溃日志中查看崩溃的位置,每次都是不同的地方,但都与 CoreData 相关。
虽然如果我只是查看崩溃日志的顶部,我会看到__Multithreading_Violation_AllThatIsLeftToUsIsHonor__我会早点解决这个问题但是是的,All That Is Left To Us Is Honor 。
CoreData 不是线程安全的
在没有适当同步的情况下从多个线程修改托管对象可能会导致使用 Core Data 的 iOS 应用程序崩溃。这是因为 Core Data 不是线程安全的,这意味着它不是为同时从多个线程访问或修改而设计的。
这是一个如何导致崩溃的示例:
import CoreData
class MyViewController: UIViewController {
var managedObjectContext: NSManagedObjectContext!
本文介绍了iOS应用使用CoreData时遇到的线程安全问题,包括应用程序的随机崩溃原因、CoreData非线程安全的性质,以及如何通过使用`performAndWait`、`perform`和`object(with:)`方法来避免并发访问冲突。同时,文章还提到了通过`-com.apple.CoreData.ConcurrencyDebug`标志进行并发调试的方法。
订阅专栏 解锁全文
486

被折叠的 条评论
为什么被折叠?



