【发布时间】:2011-10-06 00:34:19
【问题描述】:
我正在使用 NSFetchedResultsController 来处理 UITableView,一切正常,我发现它非常强大,尤其是与结果委托结合使用时。 为了向下钻取表格,我重用了相同的控制器类,通过单击单元格行使用参数进行实例化,然后将控制器推送到 UINavigationController 并构建另一个表视图,再次使用 NSFetchedResultsController。
此时,每个控制器都有自己的缓存,并且缓存名称由唯一标识符[NSString stringWithFormat"cacheName_%@",uniqueStringForCell]导出,最终我显然可以拥有很多缓存。
现在是问题。
1) 有很多缓存可能是个问题?
2) 我们什么时候应该使用缓存?
3) 在 deleteCacheWithName 的情况下,放置这种方法的最佳位置在哪里?我已经在 viewWillDisappear 中尝试过,但是我想当视图再次出现并且缓存不再存在时,例如与 UINavigationController 一起使用时,我可能会遇到问题。可能dealloc方法是最好的地方?
4) 缓存和内存管理之间有什么关系?我的意思是,当发送 (void)didReceiveMemoryWarning 时,我需要删除缓存吗?如果是,那么再次重建它呢?首选方式是什么,也许重新发出 fetch ?
5) 提取控制器的委托设置为 UITableViewController (fetchController.delegate=self),这有什么问题吗?从某种意义上说,如果发生变化,不止一个控制器会收到警报?并且 deleteCacheWithName 是否也删除了委托?
谢谢
【问题讨论】:
标签: objective-c uitableview nsfetchedresultscontroller