new = alloc + init
此方法是alloc和init的组合.与alloc一样,它初始化新对象的isa实例变量,因此它指向类数据结构.然后它调用init方法来完成初始化过程.
+new 在字面上实现如下:
+ (id) new
{
return [[self alloc] init];
}
Run Code Online (Sandbox Code Playgroud)
并且new不支持自定义初始值设定项(如initWithObjects),因此alloc + init更明确new
所以现在的问题是:
[NSArray数组] vs [[NSArray alloc] init]
它们之间的主要区别在于您是否使用ARC(自动参考计数).第一个返回一个保留和自动释放的对象.第二个返回仅保留的对象.因此,在第一种情况下,如果您希望将其保留的时间超过当前运行循环,则需要保留它.在第二种情况下,如果您不想保留它,您可能希望释放或自动释放它.
现在我们有ARC,这改变了一些事情.基本上,在ARC代码中,使用这些中的哪一个并不重要.
但请记住,[NSArray array]返回一个空的不可变数组,因此使用arraywith NSMutableArray更有意义
欲获得更多信息:
[NSMutableArray数组]与[[NSMutableArray alloc] init]之间的区别
| 归档时间: |
|
| 查看次数: |
296 次 |
| 最近记录: |