2014-02-11 2 views
1

У меня есть некоторые проблемы с управлением памятью при ARC. Когда я popViewController в моем приложении, ни один из них не освобождает память, а иногда dealloc viewcontroller не вызывается. Даже когда dealloc называется, память еще не освобождена. Итак, я спрашиваю, что будет делать память даже при вызове метода dealloc viewController? И что приведет к тому, что dealloc не будет называться? Мало ли возможно анимация, делегат? Что-нибудь еще?iOS popViewController не освобождает память и dealloc не называется

Спасибо!

ответ

5

Если dealloc не вызывается, некоторый объект имеет сильную ссылку на контроллер вида. Вам нужно проверить свой код и найти сильные ссылочные циклы.

Не ожидайте, что ваша память уменьшится на величину, которую она увеличила при нажатии на представление. iOS кэширует много вещей в памяти, чтобы улучшить производительность, например изображения, строковые литералы и т. д. Просто убедитесь, что вы не висели на объектах дольше, чем вам это нужно.

+0

спасибо !! Итак, если вызывается dealloc, значит ли это, что управление памятью в порядке? У меня есть viewController, у которого есть объект AVCaptureSession, вызывается dealloc, но после push и pop, что ViewController в 4-5 раз, память тройная и занимает больше времени для последующих нажатий. Что об этом? Любая идея, мне нужно также освободить другой объект в viewController? –

+0

Обычно вам не нужно освобождать другие объекты внутри контроллера вида. Поскольку только контроллер вида имеет ссылки на эти объекты, они будут автоматически освобождены после того, как ваш контроллер просмотра будет освобожден. –

+0

Нет ничего особенного в том, что касается 'AVCaptureSession' с точки зрения управления памятью. Просто убедитесь, что в этом контроллере просмотра нет объектов, которые все указывают друг на друга. Если вы хотите получить помощь по этому вопросу, я бы предложил опубликовать новый вопрос конкретно об этом контроллере представлений и включить весь его соответствующий код (или, в идеале, попытаться воспроизвести проблему в небольшом проектном проекте). –

Смежные вопросы