Katedral Pillon
Katedral Pillon

Reputation: 14864

Initialize NSArray with size

How do I initialize an NSArray with size only so to use a for loop to fill it later? My for loop would be

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

Upvotes: 11

Views: 16506

Answers (2)

Aaron Brager
Aaron Brager

Reputation: 66242

You don't need to initialize it with a specific size - you can add objects later:

NSMutableArray *myArray = [NSMutableArray array];

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

There are slight performance gains if you know the size ahead of time:

NSMutableArray *myArray = [NSMutableArray arrayWithCapacity:100];

But this is optional.

Upvotes: 14

max_
max_

Reputation: 24481

NSNull is the class used to represent an unset, invalid or non-existent object. Therefore you can pad the array to a specific size using instances of this class.

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

Further, you can't use the syntax someArray[i] = xyz; if the value at position i doesn't exist, as it will cause an out of bounds error.

Upvotes: 2

Related Questions