2010-02-25 7 views

Répondre

16

Essayez quelque chose comme ça.

#import <foundation/foundation.h> 
int main (int argc, const char * argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    NSMutableArray *myArray = [NSMutableArray array]; 
    [myArray addObject:@"first string"]; 
    [myArray addObject:@"second string"]; 
    [myArray addObject:@"third string"]; 
    int count = [myArray count]; 
    NSLog(@"There are %d elements in my array", count); 
    [pool release]; 
    return 0; 
} 

La boucle ressemblerait à ceci:

NSString *element; 
int i; 
int count; 
for (i = 0, count = [myArray count]; i < count; i = i + 1) 
{ 
    element = [myArray objectAtIndex:i]; 
    NSLog(@"The element at index %d in the array is: %@", i, element); 
} 

Voir CocoLab

+0

Cela ne répond pas comment affecter à un index spécifique. Seulement comment en lire. –

10
NSMutableArray* abc = [NSMutableArray array]; 
for (int i = 0; i < 10; ++ i) 
    [abc addObject:[NSNumber numberWithInt:i]]; 
return abc; 

Ici,

  • NSMutableArray est un type de tableau "mutable". Il y a aussi un super-type NSArray de type tableau constant. Contrairement à C++, le tableau d'ObjC n'est pas typé. Vous pouvez stocker tous les objets ObjC dans un NSArray. Ajoute
  • -addObject: ajoute un ObjC à la fin du tableau.
  • Puisque NSArrays ne peut stocker que ObjC, vous devez d'abord "mettre" l'entier dans un NSNumber.

Ceci est en fait plus semblable au code C++

std::vector<int> abc; 
for (int i = 0; i < 10; ++ i) 
    abc.push_back(i); 
return abc; 
3

Je vois une réponse à l'aide NSMutableArray, en poids est différent entre cela et NSArray?

NSArray est immuable: il ne peut pas être changé. NSMutableArray est une sous-classe mutable qui ajoute des méthodes à l'interface du tableau permettant la manipulation de son contenu. Ceci est un modèle vu dans de nombreux endroits à travers Cocoa: NSString, NSSet, et NSDictionary sont des exemples particulièrement fréquents qui sont tous des objets immuables avec des sous-classes mutables.

La principale raison en est l'efficacité. Vous pouvez faire des suppositions sur la gestion de la mémoire et la sécurité des threads avec des objets immuables que vous ne pouvez pas faire avec des objets qui pourraient vous échapper.

Questions connexes