arraywithobjects与initwithobjects的区别

帆仔大战Bside 发布于 2013年12月02日
无人欣赏。

看文档想到的,一个是类方法,一个是实例方法,Google了一下,都说arraywithobjects返回一个自动释放池的数组所以你不必手动释放内存,而initwithobjects需要手动操作,但是苹果引入了ARC后,就不必手动的去retain或者release,所以现在两者之间有区别么,除了创建数组时的写法不同以外。

共3条回复
adad184 回复于 2013年12月02日

可以少写一个alloc 节约生命

tinyfool 回复于 2013年12月02日

现在确实感觉区别不大了

arrayWithObjects这类就是方法名第一个部分跟类名相同的方法,有一个名字叫做便利方法,其实也是当年init然后autorelease看起来很麻烦才特意搞出来的。虽然可能效果上已经很累似了,但是应该还是有区别的。autorelease使用的是autorelease pool,ARC是自动在合适的位置帮你添加release代码之类的,还是有点区别的。ARC可能在大多数时候比autorelease pool更高效一些。建议还是用init方法吧。

当然最重要的是养成习惯吧,不要肆意混用就好了

帆仔大战Bside 回复于 2013年12月02日

1楼 @adad184 的确是诶!

2楼 @tinyfool 基本明白了,autorelease pool就是规定一个确定区域去释放内存,而ARC则更智能一些灵活一些

登录 或者 注册