NSManagedObject -managedObjectContext何时“如果接收器已从其上下文中删除则返回nil”?

时间:2014-08-26 17:14:04

标签: objective-c cocoa core-data nsmanagedobject nsmanagedobjectcontext

关于NSManagedObject的{​​{1}}方法的Apples文档说:

  

如果接收器已从其中删除,则此方法可能返回nil   上下文。

有谁知道在什么情况下这个方法会为删除的接收者返回nil,在什么情况下它仍会返回托管对象上下文?

背景:
我重写managedObjectContext,以便将已删除的托管对象引用的文件移动到废纸篓。之后,我必须清除撤消管理器,因为无法撤消此托管对象的删除,因为无法从垃圾箱中放回文件。所以我打电话:
 -didSave
只有[[[self managedObjectContext] undoManager] removeAllActions];此时不返回nil才会起作用。

1 个答案:

答案 0 :(得分:2)

绝对!有许多情况会发生这种情况。最常见的是,应用程序在从NSManagedObject删除NSManagedObjectContext之后保留对NSManagedObjectContext的引用。

由于此类情况,NSManagedObject和{{1}}之间的联系很弱。上下文观察并管理托管对象的生命周期。这两者非常紧密相连。从上下文中删除对象时,下一次保存将破坏托管对象与上下文之间的弱关系。删除了已删除的托管对象与托管对象上下文的关联。