NSMutableArray

2015-06-05 10:08:59 +08:00
 kongK

NSMutableArray *entities = @[].mutableCopy;

NSMutableArray *entities = [NSMutableArray array];
有什么本质上的区别和应用场景,求大神解答

3416 次点击
所在节点    iDev
7 条回复
xfxly
2015-06-05 10:44:19 +08:00
[NSMutableArray array] 自动释放
ibremn
2015-06-05 10:51:00 +08:00
前者相当于从一个全局单例执行mutableCopy,retainCount是1,在当前作用域就可以被释放。

后者就是 [[[NSMutableArray alloc] init] autorelease],retainCount是2,被加入了AutoreleasePool,至少需要AutoreleasePool清空后才能被释放。

实际用起来没区别,后者性能稍微高一点点,写法不同而已。
我偏爱前者。
pythons
2015-06-05 13:46:29 +08:00
这种问题蛋疼。
kobe1941
2015-06-05 18:08:03 +08:00
@ibremn 前者的写法有可能坑队友,我喜欢跟官方保持一致。
vixvix
2015-06-06 02:38:34 +08:00
@ibremn [[NSMutableArray alloc] init] 的 retain count也是1
Vienta
2015-06-06 09:33:22 +08:00
前一种写法装逼吧,个人喜好按照官方的来
kongK
2015-06-08 09:27:01 +08:00
@ibremn 之前也看了一个外国友人写的代码是这么写的,没搞懂为什么, 感谢你的解答

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/196251

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX