当我对它有很强的参考时,NSManagedObject 会变成故障吗?
Posted
技术标签:
【中文标题】当我对它有很强的参考时,NSManagedObject 会变成故障吗?【英文标题】:Will an NSManagedObject ever turn into a fault while I have a strong reference to it? 【发布时间】:2016-08-17 02:01:10 【问题描述】:我如何知道何时信任我的 NSManagedObject 并保留它的非托管变量。肯定是一个强有力的参考?
【问题讨论】:
一般来说,保留指向 managedObject 的指针是个坏主意,因为该对象可以被删除,然后使用该指针会导致崩溃。最好获取一个对象,使用它,然后丢弃它。如果您需要保留指向某物的指针,那么它应该是NSManagedObjectID
或 NSFetchedResultsController
。
【参考方案1】:
托管对象是否存在故障与您是否对它有强引用无关。比较有点像说,如果我对一个对象有一个强引用,它的属性值可以改变吗?所以,是的,不管你有什么样的引用,托管对象都有可能重新出错。
作为一个具体的例子,如果你调用refreshObject:mergeChanges:
,你的对象作为第一个参数,第二个参数设置为NO
,你会强制对象重新出错。但是您仍然可以对其进行强引用。
但请记住,正如您所说,成为故障对象与它是否会“留下来”无关。它仍然存在于记忆中。它没有被解除分配。你甚至可以使用它的属性值。
【讨论】:
我的问题是我有一个非托管属性,我不想在我不期待的时候消失在我身上。如果我有 VC.ManagedObject.extra,那么它似乎保持无故障并且 .extra 保持不变,但是当我有 VC.ManagedObject.ChildObject.extra 时,当我保存上下文时 ChildObject 会出现故障并且它会丢失额外的以上是关于当我对它有很强的参考时,NSManagedObject 会变成故障吗?的主要内容,如果未能解决你的问题,请参考以下文章