objective-c – 如果接收者已从其上下文中删除,NSManagedObject -managedObjectContext何时“返回nil”?

有关NSManagedObject的managedObjectContext方法的Apples文档说:

This method may return nil if the receiver has been deleted from its
context.

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

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

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

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

点赞