2013-12-08 35 views
0

最近,我用Core Data开发了一个应用程序。考虑到核心数据的并发性,我使用基本为this great article的父/子MOC模式。是否需要手动清理子项管理的对象上下文?

但是,仍然存在一个问题---孩子MOC是否需要在保存后手动清理?即childContext = nil; 关于父母/孩子MOC模式的文档较少。

有人能帮我一下吗?非常感谢。

+0

“干净”是什么意思? –

+0

@AbhiBeckert我对我不清楚的描述表示歉意。请阅读我的更新。 – ShengHuaWu

回答

1

是的,只要您完成对子环境的处理,就应该删除它。

如果你有一个强/保留@property指向子上下文,你应该将它设置为零,一旦你不再需要它了。

如果您没有任何强/保留属性,那么ARC会在您使用childContext的最后一行代码之后立即插入一行代码以释放子上下文。

如果ARC被禁用,则应该在应用下次空闲时自动释放。

所以基本上,你不应该需要手动删除它。但在某些情况下,您必须手动执行此操作。你不会找到任何关于这个的托管对象特定文档,它是objective-c中的标准内存管理,只有在其行为不同时才会被记录。

+0

所以方法“setParentContext:”不会创建一个从父上下文到子上下文的强(保留)指针? – ShengHuaWu

+0

它会创建一个强有力的指针(或者弱指针,似乎没有记录)从孩子到父母,而不是从父母到孩子。除非另有记录,无论哪个对象的财产设置,这是将“拥有”另一个。因此,在这种情况下,尽管有这个名字,但是从内存管理的角度来看,孩子“拥有”父母。理论上,家长甚至不应该知道孩子存在,不应该以任何方式触及孩子。 –

+0

感谢分享! – ShengHuaWu

相关问题