Nil out NSFetchedResultsController在屏幕外代表?

时间:2013-09-11 00:10:38

标签: ios nsfetchedresultscontroller

最好的做法是在屏幕外Nil out NSFetchedResultsController委托吗?

例如,我有一个由NSFRC管理的列表。当我点击列表项时,我会得到一个详细视图。我可以在详细视图上更改某些内容,将其从列表中删除。或者,如果我继续浏览详细视图,我可以使其加载更多数据(随后将更新父表视图NSFRC)。

当我把它弄出来时,我的行为很奇怪。似乎无法在任何地方找到建议。

2 个答案:

答案 0 :(得分:0)

没有理由在这里取消你的NSFRC。事实上,这是让你的tableView由NSFRC管理的主要方便之处在于,当你在其他视图中更改数据时,它会自动更新。这也会按顺序应用数据更改,而不必在返回列表时重新获取所有数据。

答案 1 :(得分:0)

我在很久以前发布了一个类似的问题,寻找这种“最佳实践”的技术解释。但是我没有找到任何东西。

我认为大多数建议的“最佳做法”来自较旧的iOS版本,其中viewDidUnload可能在内存警告的情况下被调用,但情况不再如此。

根据我的经验,我发现只有在后台更新和合并的情况下才必须辞职。所有其他情况都取决于您的应用程序逻辑。

例如,当您使用后续UIView嵌套CoreData实体时,如下所示:

child1 (UITableView)-->child2 (Detail)-->child3 --> (UITableView)-->ecc...

然后,对child3的更改将使子1表视图对该更改做出反应,因此您可能希望避免对远程提取的控制器进行不必要的调用,通过作为委托重新签名或内省更改并在其中返回YES或NO委托方法。重新获取查询可能更简单,效率更高。

保持相同的结构,假设您通过合并两个上下文对最新的UITableView进行了批量更新,如果您对所有控制器使用了相同的上下文,那么即使不需要它们也会尝试更新其视图。

因此,对于像UITableView这样的简单案例 - > UIView(详细信息)我可以看到没有保持委托分配的问题,所有其他情况,我会做一些分析。