之间的差异是什么?
NSMutableArray* p = [[NSMutableArray alloc] initWithObjects:...]
和
NSMutableArray* p = [NSMutableArray arrayWithObjects:...]
答案 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
是一种类方法。