主线程中的多个上下文:为什么以及何时使用它们?

时间:2012-12-30 14:08:41

标签: core-data memory-management nsmanagedobjectcontext

我正在寻找一个简单的答案,可以突出显示在同一个线程中使用(或避免)多个上下文的规则(在我的情况下是主要的)。

通常,在Core Data中,我设置了一个在整个应用程序中使用的主要上下文。然后,如果我需要执行一些后台工作,我会为我运行的每个后台操作创建一个上下文。

这种方法大部分时间都有效。核心数据以完美的方式管理内存。但我也可以决定明确地清除一些对象图(管理内存占用)。在这里,我可以依靠- (void)refreshObject:(NSManagedObject *)object mergeChanges:(BOOL)flag将其传递给NO param。但是,我需要注意可能丢失的未决更改。

现在,我的问题如下。是否有任何经验法则可以决定我在单个线程(主线程)中可以使用的上下文数量?我的想法如下。创建主上下文(保存更改的位置)以及仅用于显示目的并按需创建的其他上下文。当我完成使用一个时,我可以发送一个reset来回收整个内存。

有什么建议吗?如果对新的iOS 5 API有任何影响,请分享。

1 个答案:

答案 0 :(得分:2)

flexaddicted,

主线程上下文对于暂存器工作和管理工作集最有用。

Scratchpad的工作是使用MOC处理您不打算-save:的数据。或者为撤消管理器设置内容。我觉得这个价值比你想象的要低。

如果您的UI将显示一些未在UI的其余部分中使用的对象,则可以使用新的MOC管理内存,然后在关闭视图时将其丢弃。这允许处理对应用程序其余部分没有任何实用程序的所有项目。虽然这对管理内存很有用,但它不能代替响应iOS中的内存警告来修剪树。

安德鲁