我有一个NSManagedObjects数组,它由几个片段共享,一些在主队列中,一些在回调闭包内。有时候当我清除这个数组时,代码的其他部分会尝试访问它以读取和显示UI上的数据,因为它有时无法找到崩溃的数据。
我正在考虑使用NSLocks来保护这个数组写或读,但我不确定这种方法是否安全和正确。我愿意接受这种方法的建议或更正。
答案 0 :(得分:1)
Apple does not recommend在不同的线程之间共享相同的NSManagedObject:
NSManagedObject实例不打算在它们之间传递 队列。这样做可能会导致数据损坏和终止 申请。当需要交出托管对象时 从一个队列引用另一个队列,必须完成 NSManagedObjectID实例。
您应该在不同的线程上拥有该对象的不同副本。
我认为在你的情况下你有两个问题: