Проблемы с памятью при выпуске UIViewController с UITextField - PullRequest
1 голос
/ 08 июля 2010

У меня есть некоторые проблемы с памятью с контроллером представления, который содержит текстовое поле.

Краткое резюме:

  • Нажатие на кнопку, мое приложение модально представляет UIViewController (что я буду называть "VC1").
  • Из VC1 пользователь может по желанию открыть (используя pushViewController) UITableViewController ("VC2") и повернуть назад.
  • Из VC1пользователь может по желанию открыть (используя pushViewController) UIViewController ("VC3") и вернуться назад.
  • Наконец пользователь может отклонить VC1

VC2 и VC2, на которые есть ссылки вVC1 как свойства и они должны оставаться в памяти.Когда пользователь отклоняет VC1, я освобождаю все.

VC3 содержит простое представление только с одним UITextField, которое becomeFirstResponder при вызове viewWillAppear.

Проблемы:

Когда я открываю VC1, а затем VC2, поворачиваю назад и отклоняю: все в порядке, приложение возвращает то же начальное количество «живых байтов» (то есть 1,20 МБ).Когда я открываю VC1, а затем VC3, байты становятся 2 МБ.Когда я что-то пишу внутри текстового поля, выделения увеличиваются до 2,50 МБ

  1. В этот момент Instruments обнаруживает утечку памяти размером 16 байт с помощью ProofReader в качестве ответственной библиотеки и PRRfInit в качестве ответственного вызывающего абонента

  2. После возврата к VC1 и отмены распределения остаются до 2,50 МБ. Упорядочение по категориям в приборах. Я проверил, что VC1, VC2 и VC3 имеют 0 активных байтов, но в целом остается до 2,50 МБ

Также задействована клавиатура?

1 Ответ

1 голос
/ 08 июля 2010

Я предполагаю, что вы тестируете на устройстве, а не на симуляторе - симулятор выдает неверные результаты.

Общая память, используемая вашим приложением, довольно бессмысленна как мера утечек памяти - iPhone будет пытаться кэшировать как можно больше данных, пока есть свободная память - он будет загружать библиотеки и оставлять их в памяти на случай, если вы собираемся использовать их снова. Это проблема только тогда, когда вы начинаете иссякать, а потом это решит за вас.

И 16-байтовая утечка из библиотеки довольно бесполезна (при условии, что это случается только один раз) - библиотеки Apple, в конечном итоге, пропускают больше, чем это, по моему опыту.

Есть много лучших способов провести время;)

PS Является ли ProofReader библиотекой, которую вы включили, или той, которая входит в состав Apple SDK?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...