потребление памяти iPhone - PullRequest
2 голосов
/ 25 мая 2009

Я разработал приложение для iphone, которое открывается в виде вкладок, причем первая вкладка является контроллером навигации. В этом контроллере находится контроллер uiview, который содержит uitableview. Есть 2 пункта, перечисленных в виде таблицы. Когда я выбираю тот или иной элемент, он отображает еще один контроллер uiview с динамически генерируемыми представлениями.

Когда я нажимаю кнопку «Назад» в верхней части навигационного элемента управления, чтобы вернуться к предыдущему контроллеру uiview (который содержит табличное представление), а затем снова выбираю 1 из 2 элементов в представлении uitable, он почти съедает 2М памяти по приборам. Это происходит каждый раз, пока не достигнет примерно 24M, и мое приложение вылетает.

Я не регистрирую никаких утечек.

Нужно ли что-то делать при нажатии кнопки «Назад», чтобы освободить память, выделенную для контроллера uiview.

Ответы [ 2 ]

2 голосов
/ 25 мая 2009

Я не уверен, насколько вы продвинулись в разработке для iPhone или сколько вы знаете об управлении памятью, но это может быть проблемой подсчета ссылок. Помните: если вы вызываете alloc или retain, вам нужно вызывать release и никогда не вызывать release для чего-то, что вы не выделили или не сохранили.

1 голос
/ 25 мая 2009

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

Если вы делаете это и все еще теряете память, возможно, вы чрезмерно сохраняете свои пользовательские представления из их контроллеров представления?

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

Кроме того, вы пробовали Clang Static Analyzer? Инструмент «Утечки» полезен, но дает много ложных негативов. CSA тоже не панацея, но она ловит некоторые вещи, которые пропускает Утечка.

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