Вызывает ли UIView автоматический вызов removeFromSuperView? - PullRequest
2 голосов
/ 08 ноября 2011

Я видел, что этот вопрос был задан наоборот, хорошо, мой вопрос: если я выпущу UIView, у которого есть суперпредставление, вызовет ли очистка [myView release] впоследствии, вызвав [removeFromSuperview]?Я предполагаю, что это так, потому что я не вижу никаких утечек, но я хочу убедиться.

Ответы [ 3 ]

1 голос
/ 08 ноября 2011

Нет, это не так.

Вероятно, у вас нет утечек, потому что утечка означает указатель без ссылки, и родительский объект все равно будет ссылаться на представление.(А когда родителя освободят, он избавится от детей.)

1 голос
/ 08 ноября 2011

В справочной документации по классу UIView

 addSubview:

 Adds a view to the end of the receiver’s list of subviews.
 (void)addSubview:(UIView *)view Parameters

 view

 The view to be added. **This view is retained by the receiver**. After being added, this view appears on top of any other subviews.

Выпуск UIView влияет только на количество ссылок.Если счетчик ссылок равен нулю, он освобождается.В противном случае предполагается, что он будет удерживаться другими, пока они все не выпустят его.

1 голос
/ 08 ноября 2011

Вам не нужно вызывать removeFromSuperview, если только вам не нужно удалить это представление из его суперпредставления, пока пользователь все еще смотрит на него. Другими словами, используйте его как инструмент для презентаций, а не как средство управления памятью, если вы не ставите в очередь много изображений в виде прокрутки или что-то в этом роде. Кроме того, суперпредставления управляют своими подпредставлениями, когда они выпущены.

Кроме того, если вы остаетесь в контроллере представления и удаляете сохраненное представление, оно не освобождает его. Кроме того, освобождение представления в все еще активном контроллере представления не приводит к удалению его из суперпредставления (если вы не сделали это для этого).

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