当我对它有很强的参考时,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 的指针是个坏主意,因为该对象可以被删除,然后使用该指针会导致崩溃。最好获取一个对象,使用它,然后丢弃它。如果您需要保留指向某物的指针,那么它应该是 NSManagedObjectIDNSFetchedResultsController 【参考方案1】:

托管对象是否存在故障与您是否对它有强引用无关。比较有点像说,如果我对一个对象有一个强引用,它的属性值可以改变吗?所以,是的,不管你有什么样的引用,托管对象都有可能重新出错。

作为一个具体的例子,如果你调用refreshObject:mergeChanges:,你的对象作为第一个参数,第二个参数设置为NO,你会强制对象重新出错。但是您仍然可以对其进行强引用。

但请记住,正如您所说,成为故障对象与它是否会“留下来”无关。它仍然存在于记忆中。它没有被解除分配。你甚至可以使用它的属性值。

【讨论】:

我的问题是我有一个非托管属性,我不想在我不期待的时候消失在我身上。如果我有 VC.ManagedObject.extra,那么它似乎保持无故障并且 .extra 保持不变,但是当我有 VC.ManagedObject.ChildObject.extra 时,当我保存上下文时 ChildObject 会出现故障并且它会丢失额外的

以上是关于当我对它有很强的参考时,NSManagedObject 会变成故障吗?的主要内容,如果未能解决你的问题,请参考以下文章

Nib 创建的视图保留文件的所有者防止 UIViewController 的释放

常见的医学图像成像(总)

CG作品Cocoasweety 性感妖精

SylixOSQt 基于FrameBuffer渲染界面

需求感太强

Vim 和 Emacs 文本编辑器:你更喜欢哪个?