【发布时间】:2017-12-21 19:25:58
【问题描述】:
我有一个方法来构建和返回一个数组:
- (NSArray *)foo
{
NSUInteger capacity = [self getArrayCapacity];
if (capacity == 0) {
return @[];
} else {
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:capacity];
// add elements to the array, as many as capacity
...
return array;
}
}
如果我将代码简化如下,使用的内存或性能是否存在差异:
- (NSArray *)fooSimplified
{
NSUInteger capacity = [self getCapacity];
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:capacity];
// add elements to the array, as many as capacity
...
return array;
}
}
所以当capacity == 0 不是返回@[] 时,它会返回[[NSMutableArray alloc] initWithCapacity:0]
是否存在性能或内存损失/差异?
【问题讨论】:
-
你不能自己测试一下吗?您可以循环调用它一百万次,看看两者之间的速度是否不同。您可以使用 Instruments 来查看内存大小是否存在差异。另外,直接语法是否创建了一个可变或不可变的实例?我对文档的阅读只显示了不可变的创造。
-
不要在getter前加上
get(objc一般不使用get前缀)。
标签: objective-c cocoa nsmutablearray objective-c-literals