2010-12-06 3 views
2

Est-il possible d'obtenir les équivalents pour un NSArray par rapport à Java ArrayList?Comment fonctionne NSArray? Par rapport à Java ArrayList

Cependant, ce que j'essaie de faire (apprendre Objective-C à la minute) est d'avoir un NSArray de 6 entiers. Permettez-moi de «indexer» en un point spécifique de ces entiers et de définir un entier. Vérifiez ensuite si NSArray est nul ou zéro, sinon passez en boucle et imprimez des entiers sur une étiquette à l'écran (exemple).

Est-ce possible? La documentation n'est pas la meilleure du tout. Bien que je trouve les tutoriels d'Apple sur le développement général de l'iPhone extrêmement utile!

Répondre

5

Pour ce que vous voulez faire, les principales différences entre une mise en œuvre de java.util.List et NSArray sont:

  • Objective-C n'a pas « autoboxing », de sorte que vous ne pouvez pas passer juste un numéro comme 3 au tableau et faites-le stocker l'objet correct. Vous devez envelopper explicitement vous-même dans une instance de NSNumber, en faisant [NSNumber numberWithInt:3]
  • toute mise en œuvre de List peut éventuellement mettre en œuvre l'API .add() et .remove(). Dans Foundation, il existe une sous-classe de NSArray qui vous permet de modifier son contenu, appelé NSMutableArray.
  • Objective-C n'a pas génériques, donc vous ne pouvez pas faire l'équivalent de List<String>

Autre que cela, List et NSArray sont assez semblables: chacun est abstrait, vous dire comment vous pouvez utiliser un mettre en œuvre l'objet mais ne pas appliquer la façon dont cet objet fonctionne. Par exemple, un ArrayList est implémenté à l'aide d'un tableau, mais NSArray choisit dynamiquement une implémentation appropriée en fonction du contenu que vous essayez d'utiliser.

+1

Je sais que votre réponse date de 2010, je souhaite donc ajouter quelque chose de nouveau pour les visiteurs en 2013. Le langage de programmation Objective-C s'est amélioré. Vous pouvez utiliser la nouvelle syntaxe littérale pour la boxe: http://clang.llvm.org/docs/ObjectiveCLiterals.html – Elliot