는 I 배열 구축 반환하는 방법이 :오브젝티브 C : @ []과의 차이는 무엇 [NSArray를 ALLOC] initWithCapacity : 0]
- (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]
는 일입니다 반환 성능 또는 메모리 패널티/차이가 있습니까?
를 테스트 할 수 있습니까? 당신은 100 만회의 루프에서 그것을 호출 할 수 있고 속도가 2 사이에 다른지 볼 수 있습니다. 당신은 악기를 사용하여 메모리 크기에 차이가 있는지 확인할 수 있습니다. 또한, 즉시 구문은 변경 가능하거나 변경 불가능한 인스턴스를 생성합니까? 워드 프로세서를 읽는 것은 불변의 생성만을 보여줍니다. – user1118321
getter 접두사에'get'을 붙이지 마십시오 (objc는 일반적으로'get' 접두사를 사용하지 않습니다). – bbum