Удаление подпредставлений из UIScrollView и утечка памяти - PullRequest
1 голос
/ 27 апреля 2009

В настоящее время я работаю над приложением, которое отображает несколько UIView с в UIScrollView. Это UIScrollView находится внутри UIViewController.

В цикле я создаю новые UIView s, autorelease их и добавляю их в представление прокрутки. Может ли это быть проблемой?

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

Что было бы лучшим способом избавиться от этих объектов?

Ответы [ 2 ]

2 голосов
/ 27 апреля 2009

Я думаю, что это может быть то, что происходит:

Когда вы добавляете UIView в UIScrollView, UIScrollView сохранит его. Вы также вызываете autorelease в UIView, поэтому объект теперь сохраняется UIScrollView и NSAutoreleasePool. Когда вы освобождаете viewController, он уменьшает счет удержания на единицу, но объекты не будут освобождены до тех пор, пока вы не доберетесь до утечки для вашего текущего NSAutoreleasePool.

Возможно, попробуйте не делать авто-релиз объектов в цикле. Просто добавьте их в UIScrollView, а затем отпустите вручную. Таким образом, UIScrollView будет единственным владельцем этих объектов.

1 голос
/ 27 апреля 2009

Невозможно сказать, не увидев некоторый код. Разместите фрагмент кода, который вы считаете подозрительным. Убедитесь, что вы следуете всем правилам, изложенным в Руководстве по программированию управления памятью для какао .

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