和有什么区别
NSMutableArray* p = [[NSMutableArray alloc] initWithObjects:...]
和
NSMutableArray* p = [NSMutableArray arrayWithObjects:...]
在第一个中,您拥有数组对象的所有权并且您必须释放它们。
NSMutableArray* p = [[NSMutableArray alloc] initWithObjects:...];
[p release];
& 最后一个你不需要释放,因为你没有数组对象的所有权。
NSMutableArray* p = [NSMutableArray arrayWithObjects:...]; //this is autoreleased
如果您在此调用 release,那么它将使您的应用程序崩溃。
[NSMutableArray arrayWithObjects:]
是相同的[[[NSMutableArray alloc] initWithObjects:] autorelease]
实际上,如果您使用 ARC,则没有区别。
后者基本上只是 的简写[[NSMutableArray alloc] initWithObjects: ...]
,除了返回的数组是自动释放的(如果您仍在进行手动引用计数,这很重要)。
我认为区别在于:initWithObjects
是实例方法,arrayWithObject
是类方法。