Pregunta

Tengo un bucle for . Dentro de ese ciclo quiero llenar un NSArray con algunos objetos. Pero no veo ningún método que me permita hacer eso. Sé de antemano cuántos objetos hay. Quiero evitar un NSMutableArray , ya que algunas personas me dijeron que es una gran sobrecarga y freno de rendimiento en comparación con NSArray .

Tengo algo como esto:

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

Busqué en la documentación NSArray , pero ¿cómo especifico cuántos elementos habrá allí? ¿O realmente debo usar NSMutableArray para eso?

¿Fue útil?

Solución

Sí, debe usar un NSMutableArray :

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

EDITAR - declaración arreglada

Otros consejos

Deberá usar un NSMutableArray para eso porque agregar es mutación y NSArray es inmutable.

Puede convertir un NSMutableArray poblado en un NSArray después ( vea aquí para una discusión ) pero no agregará elementos a un antiguo NSArray en cualquier momento pronto.

¿Sería un buen momento para usar un NSMutableArray ?

Sé que mencionaste que te gustaría evitarlo, pero a veces hay una razón para cosas como esta.

Aconsejaría optimizar solo cuando sepa que NSMutableArray es le está causando un impacto en el rendimiento, pero si es así, siempre puede crear una matriz estática a partir de una matriz mutable después de lo he poblado Depende de si el impacto en el rendimiento es causado por el uso posterior de NSMutableArray o simplemente por crearlo.

Supongo que este no será el cuello de botella en el rendimiento de su aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top