Авто-релиз скрывает утечки в инструментах? - PullRequest
0 голосов
/ 19 января 2012

Вот сценарий, который обманывает Утечки:

  1. Генерация UIView * v из Nib или с помощью alloc / init.
  2. Выделите, инициализируйте и автоматически выпустите еще несколько просмотров, например. UIButton и прикрепите их к UIView в качестве подпредставлений.
  3. Отпустить представление v.

Вот и все. Публикации не публикуются, но Leaks их тоже не увидит.

Кто-нибудь еще видел это?

Примечание. Решением этой проблемы является удаление из SuperSuperview всего, что связано с v.

Спасибо.

Ответы [ 2 ]

1 голос
/ 19 января 2012

Вам нужно прочитать рекомендации по памяти .

Вы выполнили свою часть управления памятью, автоматически выпустив созданные вами UIViews, и передали право собственности на них UIView v.

Редактировать

После прочтения ваших комментариев создается впечатление, что они на самом деле не публикуются, что может означать циклическую ссылку. Вы уверены, что ничто иное не сохраняет вид? Как вы их создаете?

1 голос
/ 19 января 2012

Что заставляет вас думать, что они не выпущены?

Звучит так, как будто ваши удержания и выпуски сбалансированы, поэтому они должны быть выпущены правильно.Что может сбить вас с толку, так это то, что, поскольку они автоматически выпущены, они не будут выпущены сразу, а вместо этого будут освобождены через 1/60 секунды после сброса пула автоматического выпуска.Представления автоматически сохраняют подпредставления при их добавлении и освобождают их, когда они сами освобождаются (как при добавлении элементов в массив).

...