2014-12-09 2 views
5

NS 루프의 크기를 초기화하여 for 루프를 사용하여 나중에 채우려면 어떻게해야합니까? 내 루프NSArray를 크기로 초기화하십시오.

for (int i = 0; i < [myArray count]; i++) { 
    myArray[i] = someData; 
} 
+0

그래서 모든 대답은 NSArray와 반대로 NSMutableArray를 사용해야한다는 말입니다. 이 문제를 해결하기 위해 NSArray를 직접 사용할 수 없다는 뜻입니까? –

+1

NSArray는 해당 내용을 나중에 편집 할 수 없다는 것을 의미합니다. 또한 모든 객체가 배열에 추가되거나 배열에서 제거되지 않으므로 길이가 항상 일정하게 유지됩니다. 반면에 NSMutableArray는 초기화 후에도 언제든지 객체를 추가하거나 제거 할 수 있다는 점에서 변경 가능합니다. –

+0

내 제한 사항은 실수로 크기가 변경되는 것을 원하지 않지만 동시에 사용자가 값을 업데이트 할 수 있기를 원합니다. 배열은 부울 배열입니다. 나는 당신이 나의 문제를 이해할 수 있도록 자바에서 왔습니다. NSMutableArray는 크기가 커질 수 있음을 의미합니다. 그렇다면 실수로 크기가 변경되는 것을 방지하면서 값을 변경할 수있게하려면 어떻게해야합니까? –

답변

2

NSNull는, 설정되지 않은 무효 또는 존재하지 않는 개체를 나타내는 데 사용하는 클래스입니다 것입니다. 따라서이 클래스의 인스턴스를 사용하여 특정 크기로 배열을 채울 수 있습니다. 위치 i의 값이 존재하지 않는 경우가 경계 부족 오류 원인이됩니다

NSUInteger sizeOfArray = 10; 
NSMutableArray *someArray = [NSMutableArray array]; 
for (NSUInteger i = 0; i < sizeOfArray; i++) { 
    [someArray addObject:[NSNull null]]; 
} 

또한, 당신은, 구문 someArray[i] = xyz;을 사용할 수 없습니다.

+0

배열을 할당 할 방법이 있습니까? 나중에'addObject'와 함께 뭔가를 추가하지 않고'array [i] = obj'를 할 수 있습니까? –

5

당신은 특정 크기로 초기화 할 필요가 없습니다 - 당신은 나중에 개체를 추가 할 수 있습니다 :

NSMutableArray * myArray = [NSMutableArray arrayWithCapacity:100]; 
: 당신이 사전의 크기를 알고있는 경우

NSMutableArray * myArray = [NSMutableArray array]; 

for (int i = 0; i < 100; i++) { 
    [myArray addObject:someData]; 
} 

약간의 성능 향상이 있습니다

하지만 이것은 선택 사항입니다.