[重复]:用通过mutableCopy或arrayWithArray文字创建一个NSMutableA

2019-08-01 00:45发布

可能重复:
是文学创作的一个NSMutableDictionary比类的辅助方法效率较低?

据WWDC的视频,介绍的ObjectiveC文字, NSMutableArray s时,可以初始化像这样:

[NSMutableArray arrayWithArray:@[]];

但如果我们做到这一点是这样的:

[@[] mutableCopy];

我知道,一个正在初始化数组,而另一个只是提供了一个浅拷贝; 因此,存储器管理是不同的。 但是,如果我们使用ARC,什么是使用后者的缺点是什么? 是不是越贵? ARC可能同时处理不同,但我只是想知道,如果使用mutableCopy是“雪上加霜”与否。

Answer 1:

在前一种情况下,你最终添加到当前自动释放池中的两个对象:NSArray的文字和你从它创建的NSMutableArray。 在后者中,字面的NSArray被添加到自动释放池,而是NSMutableArray的复制从事实并非如此。 因此,第一种情况略差 ,性能,明智的,在排水的自动释放池(例如,在运行循环周期的结束),要求释放在连续两个对象,而在第二种情况下,副本将得到分开发布自动释放文字。 在实践中,时间差将是微不足道的。



文章来源: Creating an NSMutableArray with a literal via mutableCopy or arrayWithArray: [duplicate]