Нужно ли удалять цели из UIButton перед тем, как выпустить? - PullRequest
4 голосов
/ 01 ноября 2010

Почти все сказано ... Я добавил несколько целей в свой UIButton, мне просто нужно знать, нужно ли мне их удалять до того, как UIButton будет выпущен (и dealloc'd), или это нормально? просто предположить, что это приведёт себя в порядок?

Спасибо!

РЕДАКТИРОВАТЬ: Сценарий таков: A UIViewController, который создает кнопку и имеет цели, установленные как self:

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:btn];

Так что теперь кнопка принадлежит суперпредставлению и автоматически освобождается в конце цикла выполнения. Итак, если позже я удалю кнопку из вида, она будет исправлена, или мне также нужно будет сделать removeTarget:action:forControlEvents:, чтобы кнопка исчезла? Я предполагаю первое, так как я надеюсь, что цели назначены и не сохранены, но было бы неплохо, чтобы кто-то подтвердил это, пожалуйста? :)

Ответы [ 2 ]

1 голос
/ 01 ноября 2010

Вы имеете в виду, что у вас есть другие объекты, которые используют UIButton в качестве цели?

Если это так - если эти объекты были реализованы правильно - у них должно быть свойство getter / setter переменной-члена, установленное на "retain"- это означает, что они должны содержать ссылку на вашу кнопку UIB.

Следовательно, вы можете освободить свою UIButton, но если ссылающиеся объекты все еще ссылаются на него - они сохранят UIButton.

Это, конечно, если я занижаю вашувопрос правильно ...

0 голосов
/ 26 октября 2012

Вы должны удалить цели и очистить себя.

Предположим, что у вас есть объект O, имеющий кнопку B, и что V добавляет себя в качестве цели B. Предположим также, что O каким-то образом выставляет B ичто есть кто-то другой, удерживающий B. Когда вы отпустите O, B все еще будет жив и укажет на O. Запуск любого действия на B вызовет сбой.

Конечно, мой пример надуман, но лучше быть безопаснее, чем сожалеть.

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