gpt4 book ai didi

objective-c - UIView 会在 Cocoa Touch 中释放它的 subview 吗?

转载 作者:行者123 更新时间:2023-12-03 17:28:40 26 4
gpt4 key购买 nike

如果我在运行时创建一个 UIControl 并将其添加到 View (通过 addSubview:), View 会释放它还是我应该这样做?

这是一个示例代码:

-(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;


}

最佳答案

[UIButton buttonWithType:UIButtonTypeRoundedRect] 为您提供一个已经自动释放的对象。这意味着您不“拥有”该对象,因此您没有释放它的责任。

如果您要保留它,那么您将明确表示您想为自己保留该对象,这意味着您将承担释放它的责任。

UIView 将保留其 subview ,因此释放它们是 UIView 的责任。当自身被释放时,或者当 subview 从 super View 中删除时,UIView 将释放其 subview 。

基本上,如果您没有alloc/initnewcopyretain对象,那么它就不是你的对象,你不负责释放它。您不必担心,拥有该对象的任何对象(在您的情况下为 UIView)都会在使用完该对象后释放该对象。

关于objective-c - UIView 会在 Cocoa Touch 中释放它的 subview 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4402919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com