KDa*_*ker 13 cocoa memory-management objective-c objective-c-literals
根据介绍ObjectiveC文字的WWDC视频,NSMutableArray
可以像这样初始化s:
[NSMutableArray arrayWithArray:@[]];
Run Code Online (Sandbox Code Playgroud)
但如果我们这样做会怎么样:
[@[] mutableCopy];
Run Code Online (Sandbox Code Playgroud)
我知道一个是初始化数组,另一个是提供浅拷贝; 因此内存管理是不同的.但是,如果我们使用ARC,使用后者有什么缺点?它更贵吗?ARC可能会以不同的方式处理,但我只是想知道使用mutableCopy
是否更糟糕.
在前一种情况下,最终会在当前自动释放池中添加两个对象:NSArray文字和您从中创建的NSMutableArray.在后者中,文字NSArray被添加到自动释放池中,但是从它复制的NSMutableArray没有.因此,第一种情况是略有恶化,性能,明智的,在排水的自动释放池(例如,在运行循环周期的结束),要求释放在连续两个对象,而在第二种情况下,副本将得到分开发布自动释放的文字.在实践中,时差将是无穷小的.