2012-05-16 16 views
5

w C może po prostu zadeklarować tablicę jak poniżej:utworzenie pustej NSArray

int array[500]; 

zadeklarować tablicę wielkości 500, które mogą być następnie wypełnione później. Czy to możliwe w NSArray? Rozumiem, że dla NSMutableArray istnieje metoda klasy arrayWithCapacity do "tworzenia" i pustej tablicy (lub przynajmniej deklarowania tablicy do wypełnienia później). Czy istnieje sposób na zrobienie czegoś podobnego w NSArray, ponieważ znam dokładny rozmiar mojej tablicy, którą chcę wypełnić później w pętli "for".

Dzięki

Odpowiedz

1

Technicznie int array[500]; nie tworzy pustą tablicę - tworzy tablicę pełną zer. Od NSArray s jest niezmienny, musisz użyć NSMutableArray, jeśli chcesz, aby móc wypełnić go później.

Można zrobić tablicę z określonej pojemności, a następnie umieścić obiekty na nim tak:

NSMutableArray *array = [NSMutableArray arrayWithCapacity:500]; 
for (int i = 0 ; i != 500 ; i++) { 
    [array addObject:@(i)]; 
} 

Od NSMutableArray jest NSArray, można utworzyć go w sposób jak NSMutableArray*, a następnie powrót to jako NSArray* dla dzwoniących.

+0

Ta odpowiedź zawiera problem. Jak podano w dokumentacji dla '[NSArray arrayWithObjects: count:]': "count to liczba wartości z tablicy C obiektów do uwzględnienia w nowej tablicy. Liczba ta będzie liczbą nowych tablic. ** Musi nie może być ujemna ani większa niż liczba elementów w obiektach **. " –

+0

@DavePeck OMG, nie mogę uwierzyć, że nikt wcześniej tego nie zauważył! Dziękuję za komentarz! – dasblinkenlight