gpt4 book ai didi

ios - 核心数据 : when to 'free' unused NSManagedObjects with [ refreshObject:obj mergeChanges:NO]?

转载 作者:行者123 更新时间:2023-12-01 17:40:36 25 4
gpt4 key购买 nike

我正在开发我的第一个核心数据项目,将 NSManagedObjectModel 开发阶段基于 Xcode 的(通用)主从模板。基于 ObjectModel 的存储已经填充了各种对象的实例。

Nav Controller 表格 View 由 12 个顶级“结构”填充,每个结构都有一个与之关联的“默认空间”。选择表格行后,Detail View 将根据 DefaultSpace 的属性填充各种 UIView 子类。
从这里开始,我使用了一系列临时的 NSObject 子类来响应用户交互(当我已经开发到足以更充分地理解持久性需求的这个阶段时,其中一些将被 NSManagedObjects 取代)。

因此,当我在详细 View 中对给定的 DefaultSpace 进行了一些测试并返回主表以选择另一个结构的 DefaultSpace 时,我希望 ARC 释放不再需要的 NSObject。在我的天真中,我还期望 Core Data 对 NSManagedObjects 做同样的事情,但 Instruments 告诉我事实并非如此。

据我所理解
[managedObjectContext refreshObject:obj mergeChanges:NO];是用来将现在冗余的子对象变成故障的方法。然而,这似乎意味着遍历关系链并调用 [managedObjectContext refreshObject:obj mergeChanges:NO];在每个从属 NSManagedObject 上。
我的问题是(在什么情况下)我应该这样做还是应该让 Core Data 决定何时“清理”未使用的对象?

最佳答案

大多数情况下,你可以让 Core Data 在这里做它的事情。当您加载大量对象时,重新故障对象是一件很有用的事情,尤其是在单个实例有大量数据的情况下。在这种情况下,一旦你完成了它们,就摆脱它们。然而,在大多数情况下,这是完全没有必要的。只需像对待任何其他对象一样对待它们,除非您有理由预期内存压力。在大多数情况下,我只在对潜在的大型数据存储进行自定义迁移时重新故障对象——我知道我将加载大量数据并且需要更加小心地管理它。

关于ios - 核心数据 : when to 'free' unused NSManagedObjects with [ refreshObject:obj mergeChanges:NO]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21121276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com