Objective-c – How to fill an NSArray dynamically

iphonensarraynsmutablearrayobjective cuikit

I have a for loop. Inside that loop I want to fill up an NSArray with some objects. But I don't see any method that would let me do that. I know in advance how many objects there are. I want to avoid an NSMutableArray, since some people told me that's a very big overhead and performance-brake compared to NSArray.

I've got something like this:

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...

I looked in the documentation for NSArray, but how do I specify how many elements are going to be in there? Or must I really use NSMutableArray for that?

Best Answer

Yes, you need to use an NSMutableArray:

int count = [imageArray count];
NSMutableArray *returnArray = [[NSMutableArray alloc] initWithCapacity:count];
for (imageName in imageArray) {
    UIImage *image = [UIImage imageNamed:imageName];
    [returnArray addObject: image];

EDIT - declaration fixed