可能重复:
Is literal creation of an NSMutableDictionary less efficient than the class helper method?
根据引入ObjectiveC文字的WWDC视频,NSMutableArray
可以像这样初始化:
[NSMutableArray arrayWithArray:@[]];
但如果我们这样做会怎么样:
[@[] mutableCopy];
我知道一个是初始化数组,另一个是提供浅拷贝;因此内存管理是不同的。但是,如果我们使用ARC,使用后者有什么缺点?它更贵吗? ARC可能会以不同的方式处理,但我只是想知道使用mutableCopy
是否更糟糕。
答案 0 :(得分:6)
在前一种情况下,您最终会将两个对象添加到当前自动释放池中:NSArray文字和您正在从中创建的NSMutableArray。在后者中,文字NSArray被添加到自动释放池中,但是从它复制的NSMutableArray没有。所以第一种情况是稍微更糟,性能方面,因为耗尽自动释放池(例如在运行循环周期结束时)需要连续释放两个对象,而在第二种情况下copy将与autoreleased literal分开发布。在实践中,时差将是无穷小的。