UIButton *btn = [[UIButton alloc]init];
在上面的代码中,我应该释放btn,因为我知道我已经分配了它们,后来我需要执行
[btn release];
某处。
UIButton *btn = [UIButton buttonwithtype:UIButtonTypeRoundrect];
在第二种类型中我应该释放btn还是btn一个自动释放的对象,我不必调用它自己发布?
如何在第二种类型中释放btn?
答案 0 :(得分:2)
避免考虑对象是否自动释放。实际上,从方便方法返回的许多对象根本不是自动释放的,例如它们可能是静态实例。
相反,只需考虑一下你是否拥有对象。对于名称中包含alloc
,new
或copy
的方法,或者您已明确获得retain
所有权的对象 - 这些意味着您拥有返回的对象,并且您必须放弃release
的所有权。对于您不拥有的对象,您不必release
。
rules内存管理非常简单。让他们记忆,这样的问题的答案将成为第二天性。
答案 1 :(得分:1)
您不需要在第二个示例中释放按钮; [UIButton buttonWithType:]
返回一个自动释放的对象。
有一条简单的规则:只有在release
,alloc
,retain
或copy
时才需要mutableCopy
。
答案 2 :(得分:0)
在第二种类型中,它返回一个自动释放对象,因此您不必担心释放它。
答案 3 :(得分:0)
第一种情况:
你必须释放它,因为你拥有它。
第二种情况:
您收到的按钮是从便利构造函数中获得的。
“便利构造函数”创建一个发送自动释放消息的对象。
所以你不应该在第二种情况下释放按钮。只有在您发送了保留方法时才可以发送发布消息。
答案 4 :(得分:0)
第二次,你不需要释放按钮,它会自动返回自动释放类型。并且您只需要在拥有对象时释放该对象(例如使用alloc或new或copy)。