2010-08-13 6 views
0

Quelle est la différence entre l'utilisation de ce qui suit:Différence entre objectAtIndex et [0]

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *dir = [paths objectAtIndex:0]; 

    NSString *dir2 = paths[0]; // this throws incompatible type exception 
+0

Learning C avant de commencer à utiliser Objective-C est un mouvement intelligent, btw. –

+0

Merci! J'avais l'habitude de programmer en C il y a longtemps. – azamsharp

Répondre

3
  1. paths est un pointeur vers instance de NSArray que vous envoyez le message objectAtIndex:. Le récepteur renvoie un id.
  2. paths[0] est l'adresse de la mémoire du début d'un tableau pur C. [] et NSArray ne sont pas la même chose.
+0

Donc, quand j'utilise des chemins [0], quel sera le type de récepteur? Est-ce une sorte de valeur int qui représente l'adresse mémoire du début du tableau. – azamsharp

+1

paths [0] est juste un pointeur. ce n'est pas un objet qui signifie qu'il n'a pas de méthodes. En C pur, vous devez savoir ce que le tableau contient pour l'utiliser. – falconcreek

1

Juste Pour votre information pour tous ceux qui trouvent là-bas cette question maintenant ...

Avec LLVM, Objective-C prend en charge subscripting objet. Ainsi,

paths[0] 

est équivalent à

[paths objectAtIndexedSubscript:0] 

qui est identique à

[paths objectAtIndex:0] 

chemins est un NSArray fourni.

Pour plus de syntaxe littérale Objective-C, voir les docs ici: http://clang.llvm.org/docs/ObjectiveCLiterals.html

Questions connexes