2
에 대한 범위를 넘는 인덱스 3 전을 기준으로 배열을 만들 사전 키의 :은 insertObject : atIndex : - 빈 배열
factsBuiltArray = [NSMutableArray arrayWithCapacity: 6];
if ([statusDict count] == 10) {
for (NSString *key in [statusDict allKeys]) {
if ([key isEqualToString: @"currenciesAndConversions"]) {
[factsBuiltArray insertObject:key atIndex: 0];
}
else if ([key isEqualToString: @"languageAndTranslations"]) {
[factsBuiltArray insertObject:key atIndex: 1];
}
else if ([key isEqualToString: @"plugSize"]) {
[factsBuiltArray insertObject:key atIndex: 2];
}
else if ([key isEqualToString: @"timezone"]) {
[factsBuiltArray insertObject:key atIndex: 3]; // crashes over here
}
else if ([key isEqualToString: @"population"]) {
[factsBuiltArray insertObject:key atIndex: 4];
}
else if ([key isEqualToString: @"wikipedia"]) {
[factsBuiltArray insertObject:key atIndex: 5];
}
}
}
충돌 로그는 다음과 같습니다
*** -[__NSArrayM insertObject:atIndex:]: index 3 beyond bounds for empty array
이유에 객체를 삽입 않습니다 6의 용량으로 지정된 배열은 충돌을 일으 킵니까? 매우 혼란스러워!
NSArrays의 용량조차도 아닙니다. 이것은 메모리 할당에 대한 힌트 일뿐입니다. 배열은 전달하는 용량보다 커질 수 있습니다 (CFArrays와 달리). – Wevah
좋은 점은 NSArray가 용량에 도달하면 다시 할당된다는 것입니다. @Wevah를 지적 해 주셔서 고맙습니다. – NSProgrammer