Core Data托管对象的生命周期

时间:2011-03-08 09:51:48

标签: iphone objective-c core-data

我在NSManagedObject的实例上发现了以下行为。

  1. ObjA是从NSManagedObjectContext ContextA加载的NSManagedObject的一个实例。
  2. 我保留了ObjA
  3. 我访问ObjA的PropertyA(ObjA没有关系,只有基本属性) - 在这个阶段一切正常
  4. 我从ContextA删除了ObjA
  5. 我保存了ContextA
  6. ObjA未被解除分配(因为我对其执行了额外的保留)。我仍然可以检查它的retainCount例如。
  7. 我访问ObjA的PropertyA - >我得到了SIGABRT
  8. 我想知道这是CoreData的工作方式还是我代码的副作用。

1 个答案:

答案 0 :(得分:2)

就像this question一样,在你告诉商店删除NSManagedObjects后,你会问这个问题。 NSManagedObject文档说“重要的是要记住Core Data保留对托管对象生命周期的独占控制(即原始内存管理)。”复制您需要的信息,在您告知商店发布后(从商店中删除)后不要使用托管对象,因为它确实是。