最好的做法是在屏幕外Nil out NSFetchedResultsController委托吗?
例如,我有一个由NSFRC管理的列表。当我点击列表项时,我会得到一个详细视图。我可以在详细视图上更改某些内容,将其从列表中删除。或者,如果我继续浏览详细视图,我可以使其加载更多数据(随后将更新父表视图NSFRC)。
当我把它弄出来时,我的行为很奇怪。似乎无法在任何地方找到建议。
答案 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(详细信息)我可以看到没有保持委托分配的问题,所有其他情况,我会做一些分析。