2012-05-26 3 views
1

У меня есть подкласс UIView, который называется ToolbarView, который действует как плавающее окно и имеет UIToolbar, который имеет кнопку «X», которая может заставить окно исчезнуть. Мой вопрос: возможно ли, чтобы объект удалил себя из своего класса?UIView Удалить себя?

Например, в пределах ToolbarView.m у меня есть метод closeButtonPushed, который срабатывает при нажатии кнопки X. Можно ли просто удалить вид из своего superview, а затем позвонить dealloc? Нужно ли даже звонить dealloc, как только он будет удален из superview, там не будет никаких других указателей. Или это плохая практика памяти?

ответ

4

Да, не называйте dealloc когда-либо. Если супервизор является единственным объектом, который имеет ссылку на ваше представление, удаление представления приведет к тому, что счетчик его сохранения будет равен 0, и среда выполнения освободит объект для вас.

+0

Разве вам не нужно обходиться ноль, после удаленияFromSuperView? –

+1

Вероятно, это лучшая практика для того, чтобы вы не получили доступ к плохой памяти после удаления объекта, но не обязательно. Это не повлияет на управление памятью вообще –

+0

Хорошо, не знаю, спасибо, спасибо :) –

0

То, что вы должны сделать, это в closeButtonPushed метод, вызовите

[self removeFromSuperView]; 

это удалит ToolbarView объект и IOS будет вызывать метод dealloc и освободить объекты. Не нужно звонить dealloc вручную.

Смежные вопросы