如果我写:
NSArray *arr=[[NSArray alloc]initWithObjects:@"Liza", @"Lipi", @"Rose"];
NSArray *arr=[NSArray arrayWithObjects:@"Liza", @"Lipi", @"Rose"];
两个陈述都会做同样的事情。那么这两个陈述之间的区别是什么,使用一个语句比其他语句有什么好处?
答案 0 :(得分:2)
第二个是一个方便的方法,它返回一个自动释放的数组,第一个需要进行内存管理。在ARC下,这些是等价的,并且使用数组文字可能比你需要的更冗长,使用@[@"Liza", @"Lipi", @"Rose"]
而不是
答案 1 :(得分:1)
在过去的日子里...如果您使用的是第一个,则需要release
arr
。
第二次发布autorelease
d对象时。
现在在ARC中,自动释放由编译器提供。
好处:arrayWithObjects:
简洁明了,不需要额外的方法调用。
答案 2 :(得分:1)
在第一个语句中,您是生成的实例的所有者(因此,如果不使用ARC
,您也负责释放它),而另一个则不是(数组是自动发布的) 。 (幕后alloc
和init
由NSArray
实施调用