Должен ли я вызвать removeFromSuperview или это просто нормально? - PullRequest
1 голос
/ 21 сентября 2011

Я добавляю подпредставление, используя метод addSubview в подклассе UITableViewCell при его создании.

Затем, когда мне больше не нужен вид, я выпустил его в своем методе dealloc. Мой вопрос: каков наилучший способ освободить представление?

Достаточно ли [myView release] или мне следует позвонить:

[myView removeFromSuperview];
[myView release];

или просто [myView removeFromSuperview];

Спасибо за вашу помощь.

Ответы [ 2 ]

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

Простое правило: если вы сохранили его, вы должны освободить его.

Полагаю, вы говорите, что больше не хотите видеть изображение на экране. Чем вам нужно позвонить removeFromSuperView, в противном случае суперпредставление все равно сохранит представление, а его отпуск просто передаст владение суперпредставлению.

0 голосов
/ 19 ноября 2011

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

Я собираюсь пойти общим маршрутом здесь.

UIView * mySubview = [[UIView alloc] initWithFrame:frame];
[superView addSubview:mySubview];
[mySubview release];

Теперь у вас есть ваше подпредставление, где вы хотите его, но superView владеет им. Если ваш superView находится в иерархии представлений, и вы не являетесь его владельцем, тогда, когда ваш superView будет удален из иерархии представлений, произойдет и его подпредставление, и они будут выпущены их соответствующими владельцами.

...