通过mutableCopy或arrayWithArray创建带有文字的NSMutableArray:

KDa*_*ker 13 cocoa memory-management objective-c objective-c-literals

可能重复:
NSMutableDictionary的文字创建效率低于类助手方法吗?

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

[NSMutableArray arrayWithArray:@[]];
Run Code Online (Sandbox Code Playgroud)

但如果我们这样做会怎么样:

[@[] mutableCopy];
Run Code Online (Sandbox Code Playgroud)

我知道一个是初始化数组,另一个是提供浅拷贝; 因此内存管理是不同的.但是,如果我们使用ARC,使用后者有什么缺点?它更贵吗?ARC可能会以不同的方式处理,但我只是想知道使用mutableCopy是否更糟糕.

Noa*_*oon 6

在前一种情况下,最终会在当前自动释放池中添加两个对象:NSArray文字和您从中创建的NSMutableArray.在后者中,文字NSArray被添加到自动释放池中,但是从它复制的NSMutableArray没有.因此,第一种情况是略有恶化,性能,明智的,在排水的自动释放池(例如,在运行循环周期的结束),要求释放在连续两个对象,而在第二种情况下,副本将得到分开发布自动释放的文字.在实践中,时差将是无穷小的.

  • 在ARC下,不需要的自动释放通常会被优化掉,所以即便这样也不是主要问题. (5认同)