0

和有什么区别

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

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

4 回答 4

6

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

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

& 最后一个你不需要释放,因为你没有数组对象的所有权。

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

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

于 2012-07-18T08:46:55.703 回答
3

[NSMutableArray arrayWithObjects:]是相同的[[[NSMutableArray alloc] initWithObjects:] autorelease]

于 2012-07-18T08:42:03.787 回答
2

实际上,如果您使用 ARC,则没有区别。

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

于 2012-07-18T08:39:58.387 回答
0

我认为区别在于:initWithObjects是实例方法,arrayWithObject是类方法。

于 2012-07-18T08:44:11.613 回答