У меня есть простое приложение, состоящее из меню боковой панели (я использую SWRevealViewController), который содержит табличный вид, каждая ячейка которого имеет сегмент, указывающий на UIWebViewController. Таким образом, пользователь может открыть боковую панель и переключиться между различными настроенными мобильными сайтами (между прочим).Как очистить экземпляры UIViewController, созданные Storyboard Segues?
У меня это нормально работает, но я заметил, что, когда я переключаюсь между вкладками боковой панели, количество контроллеров, которые пингируют во время предупреждения о памяти, продолжает расти. Похоже, что новый UIWebVewController создается каждый раз, когда я переключаю вкладки, что прекрасно, за исключением того, что код структуры, по-видимому, хранит список каждого созданного контроллера и никогда не отпускает его, в результате чего память продолжает подниматься. Я уверен, что есть способ, что я могу очистить этот список, но я не нашел еще ...
Итак, мои вопросы
- Что это такое, что держит на ссылки на каждый Созданный UIViewController, и где я могу найти/получить доступ к этому?
- Как его очистить?
- Какой код оболочки/класс отвечает за вызов
didReceiveMemoryWarning:
, и где этот парень получает список контроллеров, которым необходимо получить предупреждение?
В поисках вокруг, я наткнулся на this StackOverflow question, который намекает, что popViewControllerAnimated:
может быть, как я могу очистки ненужных контроллеров, но я не уверен, какой объект следует называть, что, так как я не знаю, ответ на # 1 или # 3 выше ...
Спасибо за ответ. SWRevealViewController может держаться за контроллеры, но даже если это так, это не ТОЛЬКО место, где хранятся ссылки. Код Apple - это то, что вызывает didReceiveMemoryWarning: поэтому код Apple должен * также * содержать ссылки (либо это, либо Apple вызывает метод делегата, чтобы найти эту информацию. Если да, то каков этот метод?). Это те ссылки, которые мне нужно очистить. Если Apple держит их навсегда, то это утечка памяти. Должен быть способ сказать код Apple, что контроллер больше не нужен, чтобы Apple могла отказаться от ссылки. – Troy