Objective-c NSArray的初始化与initWithCapacity:0的关系

|| 做
[[NSMutableArray alloc] init];
[[NSMutableArray alloc] initWithCapacity:0];
编译成完全一样的东西吗? 如果它们不同,那么在内存和运行时性能方面如何,哪种形式“更好”?     
已邀请:
不,它们的行为将不同。 “ 2”将创建一个具有未知但很可能非零容量的数组,无论作者认为在大多数情况下都是合理的默认值。
initWithCapacity:0
将请求一个绝对没有分配空间的数组。这意味着要取决于
NSMutableArray
的实现:它可能不允许容量为0且行为与
init
完全相同,或者它可能不会立即分配任何内容而是分配一些金额(可能与或不与
init
相同)。首先需要它。 哪个执行“更好”完全取决于您期望使用阵列的方式。
-init
说:“我对这个数组没有期望;我将对其进行大量添加或删除,否则它可能会很小。”
-initWithCapacity:
说:“我希望此数组不超过在可预见的未来有这么多要素。” 我唯一希望ѭ3合理的地方是,如果要创建一个在很长一段时间内都不希望填充任何东西的数组。 请注意,此处适用于标准性能警告:除非您概要分析并确定是事实,否则这可能不是问题。我真的无法想象一种情况(除了成千上万的“ 4”对象),两者之间的差异将是巨大的。     

要回复问题请先登录注册