使用
创建数组(或使用其各自工厂方法的任何其他集合)的优缺点是什么[[NSArray alloc] init]
VS
[NSArray array]
目标C中的?似乎后一种工厂方法允许我们不用担心内存管理,所以我很好奇是否有任何一点使用alloc + init,尽管我现在对这两者之间的所有差异更感兴趣,以及为什么会这样做选择一个而不是另一个。
答案 0 :(得分:5)
ARC之前有一个关键的区别。 alloc/init
案例返回了保留的对象,而array
案例则返回了自动释放的对象。
使用ARC,差异并不那么重要。可能第一种情况是头发更有效,但在大多数情况下它们是可以互换的。
答案 1 :(得分:1)
在第一个中,您拥有数组对象的所有权。你必须释放它们。
NSMutableArray* p = [[NSMutableArray alloc] init];
[p release];
&安培;最后一个你不需要发布,因为你没有数组对象的所有权。
NSMutableArray* p = [NSMutableArray]; //this is autoreleased
如果您在此处调用release,那么它将使您的应用程序崩溃。