Контроллеры просмотра накапливают память, даже когда они отключены, в Objective C

#ios #objective-c #memory #memory-management #memory-leaks

#iOS #objective-c #память #управление памятью #утечки памяти

Вопрос:

Кажется, я не могу найти никаких решений для этого. Я сделал все мои объекты «слабыми» в обоих рассматриваемых контроллерах представления. Я включил функции увольнения и даже функцию ‘removeFromSuperview’. Я пробовал их все, но безуспешно. Я также попытался сделать действие кнопки «модальным», «нажимным» и т. Д. Ни один из них не имел никакого значения.

По сути, когда я перехожу от контроллеров, память, кажется, просто накапливается все больше и больше. На обоих контроллерах я просто использую WebView. Я набираю более 100 МБ памяти после некоторого времени навигации между представлениями. В конечном итоге приложению не хватает памяти и происходит сбой.

Как мне либо очистить всю память, накопленную приложением, либо правильно отключить / отключить все неактивные контроллеры просмотра и очистить всю связанную память?

Комментарии:

1. Переопределите метод dealloc для ViewController, который вы отклоняете, и проверьте, вызывается ли он.

2. Вы передаете ссылки от одного объекта к другому, и это, вероятно, создает цикл подсчета ссылок. Главное, чего не следует делать, это чтобы какой-либо контроллер представления удерживал ссылку на другой контроллер представления. Просто не делайте этого, и вам будет намного лучше.

3. Как мне вручную переопределить метод dealloc?

Ответ №1:

Вот как вы переопределяете метод dealloc

 - (void)dealloc {
    [_object release]; 
    [super dealloc];
}
 

где _object — это любое свойство, которое вы инициализировали.