Si vous souhaitez créer un tableau d'entiers, pouvez-vous utiliser NSInteger? Devez-vous utiliser NSNumber? Si oui, pourquoi?
ios
objective-c
neuromancien
la source
la source
Réponses:
Vous pouvez utiliser un ancien tableau C simple:
Ou, vous pouvez utiliser un
NSArray
ouNSMutableArray
, mais ici vous devrez encapsuler chaque entier dans uneNSNumber
instance (car lesNSArray
objets sont conçus pour contenir des instances de classe).la source
NSArray
, je suis sûr que vous ne sentirez pas la performance frapper.Tableau C:
Tableau Objective-C:
Réseau rapide:
Ceci est également correct:
NB: les tableaux sont fortement typés en Swift; dans ce cas, le compilateur déduit du contenu que le tableau est un tableau d'entiers. Vous pouvez également utiliser cette syntaxe de type explicite:
Si vous vouliez un tableau de doubles, vous utiliseriez:
ou:
la source
Si vous souhaitez utiliser un NSArray, vous avez besoin d'une classe Objective-C pour y mettre - d'où l'exigence NSNumber.
Cela dit, Obj-C est toujours C, vous pouvez donc utiliser des tableaux C normaux et contenir des entiers normaux au lieu de NSNumbers si vous en avez besoin.
la source
Vous pouvez utiliser CFArray au lieu de NSArray. Voici un article expliquant comment.
Il en va de même pour la version CoreFoundation des autres conteneurs.
la source
J'ai créé un simple wrapper Objective C autour du bon vieux tableau C à utiliser plus facilement: https://gist.github.com/4705733
la source
Si l'ordre de vos entiers n'est pas requis, et s'il n'y a que des valeurs uniques
vous pouvez également utiliser NSIndexSet ou NSMutableIndexSet Vous pourrez facilement ajouter et supprimer des entiers, ou vérifier si votre tableau contient un entier avec
Consultez la documentation pour plus d'informations.
la source
NSSet
(et l'utilisation d'entiers enveloppés dans unNSNumber
)?Je pense que c'est beaucoup plus facile d'utiliser NSNumbers. Voici tout ce que vous devez faire:
la source
for
ou simplement un autre tableau pour les nombres, puisarrayWithArray
.