Ios 新初始化和数组初始化之间的差异
初始化Ios 新初始化和数组初始化之间的差异,ios,objective-c,iphone,arrays,Ios,Objective C,Iphone,Arrays,初始化[NSArray new]和[NSArray array]之间有区别吗 似乎是NSArray实现的一部分,而属于NSObjectnew=alloc+init 此方法是alloc和init的组合。像alloc一样,它 初始化新对象的isa实例变量,使其指向 到类数据结构。然后它调用init方法来 完成初始化过程 +new的字面意思是: + (id) new { return [[self alloc] init]; } 而且new不支持自定义初始值设定项(如initWithObj
[NSArray new]
和[NSArray array]
之间有区别吗
似乎是
NSArray
实现的一部分,而属于NSObject
new=alloc+init
此方法是alloc和init的组合。像alloc一样,它
初始化新对象的isa实例变量,使其指向
到类数据结构。然后它调用init方法来
完成初始化过程
+new
的字面意思是:
+ (id) new
{
return [[self alloc] init];
}
而且new
不支持自定义初始值设定项(如initWithObjects
),因此alloc+init
比new
更明确
所以现在的问题是:
[NSArray数组]vs[[NSArray alloc]init]
它们之间的主要区别在于,如果不使用ARC
(自动参考计数)。第一个返回一个保留的和
自动释放对象。第二个函数返回一个仅为
保留。因此,在第一种情况下,如果您
想让它保持比当前运行循环更长的时间。在
第二种情况是,如果您不想释放或自动释放它
我想把它留着
现在我们有了ARC,这改变了一切。基本上,在ARC代码中
不管你用哪一个
但是请记住,[NSArray array]
返回一个空的不可变数组,因此将array
与NSMutableArray
一起使用更有意义
有关更多信息:
加上这个答案,关于[NSArray array],它会生成一个空的不可变数组。显然,这样做是毫无用处的(比如使用new),但在使用NSMutableArray时会发生变化。正如@Aladin所提到的,现在我们有了ARC,它没有任何区别。归结到语法用法和偏好。它不是完全无用的,你可以做一些像
NSArray*arr=[NSArray array];NSArray*arr2=[arr arrayByAddingObject:@“ha!”代码>。这可能有用。。总有一天。。我想