push и pop увеличивают живые байты - PullRequest
1 голос
/ 27 августа 2011

в качестве теста я снова и снова нажимаю и выталкиваю один и тот же вид ... Я перехожу к следующему экрану и нажимаю снова и снова ... и вижу непрерывно увеличивающиеся живые байты ...

Хотя где-то еще в приложении я перехожу между двумя экранами, отображающими представления таблиц, количество активных байтов увеличивается и уменьшается на ту же величину (за исключением первого раза).

Так что мне нужночтобы проверить, что происходит ... после 20 минут игры обычно происходит сбой приложения - обратите внимание, что в любое время нет утечек памяти.

На этих первых представлениях, которые я нажимаю и выскакиваю,Второй экран имеет изображение и текстовое поле.Нужно ли что-то особенное с этими?Также я заметил, что у меня не было функций по умолчанию viewWillDisappear и viewDidDisappear ... они мне нужны?они обязательны?добавил, что ничего не изменилось ... так что мне нужно добавить что-то конкретное в них ...

любая помощь очень ценится

Приветствия, geebee

Ответы [ 3 ]

1 голос
/ 27 августа 2011
0 голосов
/ 27 августа 2011

Вы можете узнать, какие именно изменения произошли за период, с помощью анализа кучи инструментов.

1) Профиль с использованием шаблона распределения

2) запустить приложение (перейти вокруг)

3) Нажмите кнопку «Отметить кучу»

4) Запустите приложение (перейдите по кругу)

5) Нажмите кнопку «Отметить кучу»

, затем посмотрите нарезультаты анализа кучи.

когда ваше представление выгружено, вы должны обнулить свои IBOutlet s, освободить то, что вы можете легко восстановить, и освободить то, что можно считать большим выделением.

0 голосов
/ 27 августа 2011

Установите точку останова в методе -dealloc контроллера, который вы нажимаете и выталкиваете, чтобы увидеть, срабатывает ли он когда-либо. Если нет, то вы сохраняете ссылку на это где-то. Это может произойти по ряду причин. Вот несколько возможностей:

  1. Контроллер предыдущего представления может сохранять ссылку на преемника. В этом нет необходимости, и его следует избегать (UINavigationController сохраняет контроллеры представления в своем стеке).

  2. Возможно, вы ввели код сохранения в свой код, сохранив ссылку на объект, который сохраняет ваш контроллер представления. Это может легко случиться, если вы используете блоки и не будете соблюдать правила управления памятью.

Если вы все делаете правильно, ваш контроллер представления должен освободиться после того, как он извлечен из контроллера навигации.

...