2010-09-13 16 views
23

que estoy haciendo esto:cómo anexar valores a una matriz en Objective-C

for(int i=0;i>count;i++) 
{ 
    NSArray *temp=[[NSArray alloc]initWIthObjects]i,nil]; 
    NSLog(@"%i",temp); 
} 

Vuelve a mí 0,1,2,3 .... contando uno por uno, pero yo quiero una matriz con anexar estos valores {0,1,2,3,4,5 ...}. Esto no es un gran problema, pero no puedo encontrarlo. Soy nuevo en iPhone.

+0

No utilice etiquetas br. Use el botón "101010" para formatear el código. –

Respuesta

55
NSMutableArray *myArray = [NSMutableArray array]; 

for(int i = 0; i < 10; i++) { 
    [myArray addObject:[NSNumber numberWithInt:i]]; 
} 

NSLog(@"myArray:\n%@", myArray); 
+0

¡Asegúrese de liberar el 'NSMutableArray' después! –

+0

ah, sí, creo que necesito poner el recordatorio en mi respuesta – vodkhang

+0

Probablemente debería ser 'i JohnK

10

Este código no está haciendo lo que quiere que haga por varias razones:

  1. NSArray no es una clase de "mutable", lo que significa que no está diseñado para ser modificado después de que ha creado. La versión mutable es NSMutableArray, que le permitirá agregar valores.

  2. No puede agregar primitivas como int a una clase NSArray o NSMutableArray; solo tienen objetos. La clase NSNumber está diseñada para esta situación.

  3. Tiene pérdidas de memoria cada vez que asigna una matriz. Siempre empareje cada llamada al alloc con una llamada correspondiente a release o autorelease.

El código que quiere decir algo como esto:

NSMutableArray* array = [[NSMutableArray alloc] init]; 
for (int i = 0; i < count; i++) 
{ 
    NSNumber* number = [NSNumber numberWithInt:i]; // <-- autoreleased, so you don't need to release it yourself 
    [array addObject:number]; 
    NSLog(@"%i", i); 
} 
... 
[array release]; // Don't forget to release the object after you're done with it 

Mi consejo es leer la Cocoa Fundamentals Guide para entender algunos de los conceptos básicos.

1

un camino más corto que podría hacer es:

NSMutableArray *myArray = [NSMutableArray array]; 

for(int i = 0; i < 10; i++) { 

    [myArray addObject:@(i)]; 
} 

NSLog(@"myArray:\n%@", myArray); 
Cuestiones relacionadas