nsarray를 동적으로 채우는 방법은 무엇입니까?
-
22-07-2019 - |
문제
나는있다 for
고리. 그 루프 안에서 나는 채우고 싶다 NSArray
일부 개체로. 그러나 나는 그렇게 할 수있는 방법이 보이지 않습니다. 나는 얼마나 많은 객체가 있는지 미리 알고 있습니다. 나는 피하고 싶다 NSMutableArray
, 어떤 사람들은 그것이 나에게 매우 큰 오버 헤드와 성능 브레이크라고 말했기 때문에 NSArray
.
나는 다음과 같은 것을 가지고 있습니다.
NSArray *returnArray = [[NSArray alloc] init];
for (imageName in imageArray) {
UIImage *image = [UIImage imageNamed:imageName];
//Now, here I'd like to add that image to the array...
}
나는 문서를 찾았다 NSArray
, 그러나 거기에 얼마나 많은 요소가있을 것인지 어떻게 지정합니까? 아니면 정말 사용해야합니다 NSMutableArray
그에 대한?
해결책
예, 사용해야합니다 NSMutableArray
:
int count = [imageArray count];
NSMutableArray *returnArray = [[NSMutableArray alloc] initWithCapacity:count];
for (imageName in imageArray) {
UIImage *image = [UIImage imageNamed:imageName];
[returnArray addObject: image];
...
}
편집 - 선언 수정
다른 팁
사용해야합니다 NSMutableArray 그것을 추가하는 것은 돌연변이와입니다 NSARRAY 불변입니다.
당신은 인구를 만들 수 있습니다 NSMutableArray
에 NSArray
그 후 (토론은 여기를 참조하십시오)하지만 당신은 정기적 인 옛날에 아이템을 추가하지 않을 것입니다. NSArray
곧.
이것은 사용하기에 좋은 시간이 될 것입니다 NSMutableArray?
나는 당신이 그것을 피하고 싶다고 언급했지만 때로는 이와 같은 이유가 있습니다.
나는 당신이 알고있을 때만 최적화하는 것이 좋습니다 NSMutableArray
~이다 성능이 히트를 일으키지 만, 그렇다면, 채워진 후에는 돌연변이가있는 배열에서 항상 정적 아레이를 만들 수 있습니다. 그것은 당신이 후속 사용으로 인해 성능 히트가 NSMutableArray
아니면 그냥 만들어서.
내 생각에 이것이 앱의 성능 병목 현상이되지 않을 것입니다.