2009-04-27 1 views
1

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

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

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

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

ответ

1

Невозможно сказать, не видя какого-либо кода. Опубликуйте фрагмент кода, который вы считаете подозрительным. Убедитесь, что вы соблюдаете все правила, изложенные в Memory Management Programming Guide for Cocoa.

2

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

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

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