使用类方法而不是init实例有什么好处,反之亦然?

时间:2013-04-14 13:09:50

标签: iphone collections

如果我写:

NSArray *arr=[[NSArray alloc]initWithObjects:@"Liza", @"Lipi", @"Rose"];
NSArray *arr=[NSArray arrayWithObjects:@"Liza", @"Lipi", @"Rose"];

两个陈述都会做同样的事情。那么这两个陈述之间的区别是什么,使用一个语句比其他语句有什么好处?

3 个答案:

答案 0 :(得分:2)

第二个是一个方便的方法,它返回一个自动释放的数组,第一个需要进行内存管理。在ARC下,这些是等价的,并且使用数组文字可能比你需要的更冗长,使用@[@"Liza", @"Lipi", @"Rose"]而不是

答案 1 :(得分:1)

在过去的日子里...如果您使用的是第一个,则需要release arr

第二次发布autorelease d对象时。

现在在ARC中,自动释放由编译器提供。

好处:arrayWithObjects:简洁明了,不需要额外的方法调用。

答案 2 :(得分:1)

在第一个语句中,您是生成的实例的所有者(因此,如果不使用ARC,您也负责释放它),而另一个则不是(数组是自动发布的) 。 (幕后allocinitNSArray实施调用