문제

나는있다 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 불변입니다.

당신은 인구를 만들 수 있습니다 NSMutableArrayNSArray 그 후 (토론은 여기를 참조하십시오)하지만 당신은 정기적 인 옛날에 아이템을 추가하지 않을 것입니다. NSArray 곧.

이것은 사용하기에 좋은 시간이 될 것입니다 NSMutableArray?

나는 당신이 그것을 피하고 싶다고 언급했지만 때로는 이와 같은 이유가 있습니다.

나는 당신이 알고있을 때만 최적화하는 것이 좋습니다 NSMutableArray ~이다 성능이 히트를 일으키지 만, 그렇다면, 채워진 후에는 돌연변이가있는 배열에서 항상 정적 아레이를 만들 수 있습니다. 그것은 당신이 후속 사용으로 인해 성능 히트가 NSMutableArray 아니면 그냥 만들어서.

내 생각에 이것이 앱의 성능 병목 현상이되지 않을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top