使用arrayWithCapacity有什么好处

Edw*_*ony 7 objective-c ios

arrayWithCapacity中所定义的方法NSArray.h和在实施NSArray.m

当我查看GNUStep提供的代码时,我可以得到这arrayWithCapacity是一个调用的常规方法initWithCapacity:

+ (id) arrayWithCapacity: (NSUInteger)numItems
{
    return AUTORELEASE([[self allocWithZone: NSDefaultMallocZone()]
    initWithCapacity: numItems]);
}
Run Code Online (Sandbox Code Playgroud)

并且initWithCapacity是一种只进行自我初始化的简单方法.

- (id) initWithCapacity: (NSUInteger)numItems
{
  self = [self init];
  return self;
}
Run Code Online (Sandbox Code Playgroud)

没有关于内存分配和执行的项目数量.
使用该arrayWithCapacity方法有什么好处?简单地使用它会更好[[NSArray alloc] init]吗?

azs*_*mej 9

期望提供显式大小可以改善内存分配,因为在添加项目时无需调整数组的大小.在实践中,它只是一个提示,并且有一些证据表明它实际上没有被使用(参见关于基金会集合类的objc.io文章).