这两行之间有什么区别?

时间:2011-05-25 13:53:25

标签: objective-c ios4 uibutton

UIButton *btn=[[UIButton alloc] init]; 

UIButton *btn=[UIButton buttonWithType:UIButtonTypeRoundedRect];

这两个声明有什么区别或两者都相同?

3 个答案:

答案 0 :(得分:2)

第一个将UIButton对象分配给btn。你有责任在完成后释放它,因为你alloc已经记住了。

第二个将执行相同的操作,但该对象将被自动释放,这意味着您不必显式调用release,因为操作系统将在必要时执行该操作。

注意:UIButtonType也不同。

答案 1 :(得分:1)

第一个为您提供一个未自动释放的UIButton buttonType UIButtonTypeCustom

第二个为您提供一个UIButton buttonType UIButtonTypeRoundedRect的自动释放{{1}}

答案 2 :(得分:1)

[UIButton buttonWithType:...]

创建一个自动释放的对象(仍然需要内存)。

[[UIButton alloc]init] 

创建一个不会被自动释放的对象。你必须自己释放!

进一步了解这个question

更多关于memory management