Я использую NSFetchedResultsController для работы с UITableView, и все работает отлично, и я нашел его очень мощным, особенно в сочетании с делегатом результатов.
Для детализации таблицы я повторно использую тот же класс контроллера, который создается с параметрами путем щелчка по строке ячейки, затем контроллер помещается в UINavigationController и создается другое табличное представление, снова с NSFetchedResultsController.
На этом этапе каждый контроллер имеет свой собственный кеш, а имя кеша выводится с помощью уникального идентификатора [NSString stringWithFormat "cacheName _% @", uniqueStringForCell], и, в конце концов, я, очевидно, могу иметь много кешей.
Теперь вопросы.
1) Наличие большого количества кэша может быть проблемой?
2) Когда мы должны использовать кеш?
3) В случае deleteCacheWithName, где лучше всего разместить такой метод? Я попытался в viewWillDisappear, но с этим я полагаю, у меня могут возникнуть проблемы, когда представление появится снова и кеш больше не присутствует, например, при использовании с UINavigationController. Возможно, метод dealloc - лучшее место?
4) Какая связь между кешем и управлением памятью? Я имею в виду, когда (void) didReceiveMemoryWarning отправляется мне нужно удалить кэш? Если да, как насчет его восстановления? Какой предпочтительный способ, может быть, выдача выручки?
5) у контроллера выборки делегат установлен в UITableViewController (fetchController.delegate = self), есть ли проблемы с этим? В некотором смысле, что в случае изменения более одного контроллера оповещены? И deleteCacheWithName также удаляет делегата?
спасибо