Управление памятью при использовании IBOutlet / NIBs - PullRequest
0 голосов
/ 19 мая 2011

Мое приложение почти завершено, и я профилировал его с помощью инструментов. Я проверяю счетчики различных объектов.

Я осторожно выпускал любые объекты, которые я назвал alloc, и они, похоже, не протекают - так круто.

Однако у меня есть контроллер представления, в котором есть UIPickerView. Я установил это, перетащив его на свой NIB в IB, определил свойство с помощью IBOutlet, синтезировал его, а затем подключил все это.

Каждый раз, когда я запускаю представление, кажется, что количество UIPickerViews увеличивается на единицу. Я предполагал, что мне не нужно выпускать подобные вещи самостоятельно, поскольку я назначил их свойству (используя nonatomic, retain).

Это происходит со всеми моими элементами пользовательского интерфейса - кнопками и т. Д., А не только с видом сборщика. Я просто использовал это в качестве примера.

Может кто-нибудь помочь мне здесь?

Спасибо!

1 Ответ

0 голосов
/ 19 мая 2011

Когда представление загружено, все элементы, созданные из NIB, сохраняются для вас, и ваши указатели IBOutlet инициализируются, указывая на эти сохраненные объекты подпредставления. Вам необходимо освободить их в viewDidUnload. Вы это делаете?

В viewDidUnload вы должны освободить все объекты, созданные из NIB, и установить для этих указателей значение nil. Вы также должны выпустить этот же объект в dealloc Пример здесь.

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