cfi*_*her 0 cocoa cocoa-touch memory-management objective-c uiview
如果我在运行时创建一个UIControl并将其添加到视图中(通过addSubview :),视图是否会释放它,或者我应该这样做?
这是一个示例代码:
-(IBAction) cloneMe: (id) sender{
if (!currentY) {
currentY = [sender frame].origin.y;
}
UIButton *clone = [UIButton buttonWithType:UIButtonTypeRoundedRect];
CGRect cloneFrame = [sender frame];
cloneFrame.origin.y += currentY + cloneFrame.size.height + 30;
clone.frame = cloneFrame;
[clone setTitle:@"I'm a clone" forState:UIControlStateNormal];
[[sender superview] addSubview:clone];
currentY = cloneFrame.origin.y + cloneFrame.size.height;
}
Run Code Online (Sandbox Code Playgroud)
[UIButton buttonWithType:UIButtonTypeRoundedRect]给你一个已经自动释放的对象.这意味着您不"拥有"该对象,因此您没有责任释放它.
如果你保留它,那么你会明确地说你想为自己保留这个对象,这意味着你将负责释放它.
在UIView将保留它的子视图,所以它的UIView的释放他们的责任.UIView当自身被解除分类时,或者从超级视图中删除子视图时,它将释放它的子视图.
基本上,如果你没有alloc/init,new,copy或retain一个对象,那么它是不是你的目标,你是不是负责释放它.您不必担心它,无论拥有该对象的对象(在您的情况下UIView)都将在它完成时释放它.
| 归档时间: |
|
| 查看次数: |
626 次 |
| 最近记录: |