iOS:NSMutableArray alloc / init和arrayWithObjects之间的区别:

时间:2012-07-18 08:38:04

标签: ios cocoa

之间的差异是什么?
NSMutableArray* p = [[NSMutableArray alloc] initWithObjects:...]

NSMutableArray* p = [NSMutableArray arrayWithObjects:...]

4 个答案:

答案 0 :(得分:6)

在第一个中,您拥有数组对象的所有权。你必须释放它们。

NSMutableArray* p = [[NSMutableArray alloc] initWithObjects:...];
[p release];

&安培;最后一个你不需要发布,因为你没有数组对象的所有权。

NSMutableArray* p = [NSMutableArray arrayWithObjects:...]; //this is autoreleased

如果您在此处调用release,那么它将使您的应用程序崩溃。

答案 1 :(得分:3)

[NSMutableArray arrayWithObjects:][[[NSMutableArray alloc] initWithObjects:] autorelease]

相同

答案 2 :(得分:2)

在实践中,如果你在ARC上没有区别。

后者基本上只是[[NSMutableArray alloc] initWithObjects: ...]的简写,除了返回的数组是自动释放的(如果你还在进行手动引用计数,这很重要)。

答案 3 :(得分:0)

我认为不同之处在于:initWithObjects是一种实例方法,而arrayWithObject是一种类方法。