在我发布之前,是否需要从UIButton中删除目标?

时间:2010-11-01 14:52:23

标签: objective-c cocoa-touch ios uibutton

几乎说了这一切...我已经为我的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:才能使按钮消失?我猜测前者,因为我希望目标被分配而不是保留,但是有人确认它好吗? :)

2 个答案:

答案 0 :(得分:1)

你的意思是你有其他使用UIButton作为目标的物体吗?

如果是这样 - 如果这些对象被正确实现 - 他们应该将其成员变量getter / setter属性设置为“retain” - 这意味着他们应该为您的UIButton保留一个引用

因此,您可以释放您的UIButton,但如果引用对象仍然引用它 - 它们将保留UIButton。

当然,如果我正确地低估了你的问题......

答案 1 :(得分:-2)

你必须删除目标并清理自己。

假设您有一个具有按钮B的对象O,并且V将其自身添加为B的目标。 也假设O以某种方式暴露B并且有其他人保留B. 释放O时,B仍然处于活动状态并指向O.触发B上的任何操作都将导致崩溃。

当然,我的例子是人为的,但最好是比抱歉更安全。