NSManagedContext重置做了什么?

时间:2011-11-26 23:09:08

标签: objective-c core-data nsmanagedobjectcontext

这是我的方案:我有一个运行大量计算的线程,最后通过核心数据保存结果。我已经使用它自己的自动释放池设置了线程,并且它在线程中创建了自己的NSManagedContext。用户可以将输入更改为主线程上的计算,在这种情况下,计算线程将终止(通过定期检查NSLocked变量)并重新启动新输入。这里的一切都很好。

出于性能原因,计算线程没有撤消管理器,最后只有一个上下文保存。如果检测到终止命令,我不想保存结果。现在我只是跳过上下文保存并释放它,这似乎工作正常。

然而,我注意到NSManagedContext有一种重置方法。 Apple关于此方法的文档对我没有多大帮助。它只是声明它将接收者的内容返回到它的基本状态,并且所有接收者的管理对象都被“遗忘”。

这是什么意思?它是否相当于恢复到上次保存的版本?是否需要使用撤消管理器来正确操作此方法?我应该使用这种方法而不是我现在正在做什么?

1 个答案:

答案 0 :(得分:1)

听起来您正在使用上下文来缓存独立于主线程上下文的更改,如果您不希望记录这些更改,则只需删除“本地”上下文即可将其删除。这对于您描述的场景来说已经足够了。如果您不想重新启动后台线程,那么-reset可能很有用,但只需重新使用相同的线程(和上下文),但使用新的输入。由于您启动了一个新线程(因此在其上创建了一个新的NSManagedObjectContext),在这种情况下,-reset对您来说可能不是很有用。您几乎已经按照Apple推荐的几个示例代码进行了操作。