Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 新初始化和数组初始化之间的差异_Ios_Objective C_Iphone_Arrays - Fatal编程技术网

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!”。这可能有用。。总有一天。。我想