几乎说了这一切...我已经为我的UIButton添加了几个目标,我只需要知道在UIButton发布之前我是否需要删除它们(并且dealloc'd),或者它没关系只是为了假设它会整理一下?
谢谢!
编辑:方案是:UIViewController
创建一个按钮并将目标设置为self
:
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:btn];
所以现在按钮由superview拥有,并在运行循环结束时自动释放。那么,如果我稍后从视图中删除该按钮,它是否会释放,或者我是否还需要执行removeTarget:action:forControlEvents:
才能使按钮消失?我猜测前者,因为我希望目标被分配而不是保留,但是有人确认它好吗? :)
答案 0 :(得分:1)
你的意思是你有其他使用UIButton作为目标的物体吗?
如果是这样 - 如果这些对象被正确实现 - 他们应该将其成员变量getter / setter属性设置为“retain” - 这意味着他们应该为您的UIButton保留一个引用。
因此,您可以释放您的UIButton,但如果引用对象仍然引用它 - 它们将保留UIButton。
当然,如果我正确地低估了你的问题......
答案 1 :(得分:-2)
你必须删除目标并清理自己。
假设您有一个具有按钮B的对象O,并且V将其自身添加为B的目标。 也假设O以某种方式暴露B并且有其他人保留B. 释放O时,B仍然处于活动状态并指向O.触发B上的任何操作都将导致崩溃。
当然,我的例子是人为的,但最好是比抱歉更安全。