关于NSManagedObject
的{{1}}方法的Apples文档说:
如果接收器已从其中删除,则此方法可能返回nil 上下文。
有谁知道在什么情况下这个方法会为删除的接收者返回nil,在什么情况下它仍会返回托管对象上下文?
背景:
我重写managedObjectContext
,以便将已删除的托管对象引用的文件移动到废纸篓。之后,我必须清除撤消管理器,因为无法撤消此托管对象的删除,因为无法从垃圾箱中放回文件。所以我打电话:
-didSave
只有[[[self managedObjectContext] undoManager] removeAllActions];
此时不返回nil才会起作用。
答案 0 :(得分:2)
绝对!有许多情况会发生这种情况。最常见的是,应用程序在从NSManagedObject
删除NSManagedObjectContext
之后保留对NSManagedObjectContext
的引用。
由于此类情况,NSManagedObject
和{{1}}之间的联系很弱。上下文观察并管理托管对象的生命周期。这两者非常紧密相连。从上下文中删除对象时,下一次保存将破坏托管对象与上下文之间的弱关系。删除了已删除的托管对象与托管对象上下文的关联。