首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Objective-c NSArray初始化与initWithCapacity:0

Objective-c NSArray初始化与initWithCapacity:0
EN

Stack Overflow用户
提问于 2011-05-21 04:47:13
回答 1查看 6K关注 0票数 18

代码语言:javascript
复制
[[NSMutableArray alloc] init];

代码语言:javascript
复制
[[NSMutableArray alloc] initWithCapacity:0];

编译成完全一样的东西?

如果它们不同,那么在内存和运行时性能方面,哪种形式更“好”?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-21 04:59:34

不,它们的行为不会相同。init将创建一个具有一些未知但最有可能非零容量的数组-无论作者认为在大多数情况下都是合理的默认值。initWithCapacity:0将请求一个完全没有分配空间的数组。这意味着什么取决于NSMutableArray实现:它可能不允许容量为0并且行为完全像init,或者它可能不会立即分配任何东西,而是在您第一次需要它时分配一些量(可能与init相同,也可能不分配)。

哪一个性能会“更好”完全取决于你期望如何使用数组。-init说:“我对这个数组没有任何期望;我要么对它进行大量的添加和删除,要么它可能会非常小。”-initWithCapacity:说,“我希望这个数组在可预见的将来不会超过这么多的元素。”

我唯一希望initWithCapacity:0合理的地方是,如果你正在创建一个数组,而你在相当长的一段时间内都不希望填充任何东西。

请注意,这里适用标准的性能警告:这可能不是问题,除非您分析并确定它是问题。我真的无法想象这两者之间的差别会有多大(除了成千上万的NSMutableArray对象)。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6077422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档