目标-c NSArray init与InitwithInitwithCapability:0

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (9)

MutableArray alloc] init];

[[NSMutableArray alloc] initWithCapacity:0];

编译成完全一样的东西?

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

提问于
用户回答回答于

init将创建一个具有未知但最有可能具有非零容量的数组--无论作者在大多数情况下认为这是一个合理的缺省值。initWithCapacity:0将请求一个绝对没有分配空间的数组。

这意味着什么取决于NSMutableArray实现:它可能不允许容量为0,并且行为与init,或者它可能不会立即分配任何东西,而是分配一些金额(与init当你第一次需要它的时候。

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

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

请注意,标准性能警告适用于这里:除非您分析并确定是的,否则它可能不是一个问题。除了成千上万的NSMutableArray,这两者之间的差别将是巨大的。

扫码关注云+社区