Ajout d'éléments à un NSArray
Je sais qu'on pourrait tout simplement utiliser un NSMutableArray
pour l'objet, mais que faire si ce n'est pas une option et nous avons besoin d'ajouter de nouveaux éléments à un NSArray
. Comment pourrions-nous le faire?
Ma réponse immédiate serait de créer un NSMutableArray
avec l'original NSArray
, ajouter de nouveaux éléments sur, puis jeté à la NSMutableArray
en arrière à l'original NSArray
.
M'a demandé dans une interview et je suis curieux de savoir ce qu'est une bonne solution pourrait être, d'ailleurs il suffit d'utiliser un NSMutableArray
en premier lieu.
OriginalL'auteur Oscar | 2012-12-12
Vous devez vous connecter pour publier un commentaire.
ou
La plus efficace. Mutable tableau. Ensuite le tableau en ajoutant dans ma méthode. je ne sais pas si. De le tester et de me faire part de vos constats 🙂
J'ai testé cela et ils s'est avéré être le même aussi longtemps que vous êtes seulement en ajoutant un élément de plus, indépendamment de la taille. Voici la longue explication: stackoverflow.com/a/26517217/1564332
vous êtes génial !!!!
OriginalL'auteur Fogmeister
Vous pouvez utiliser
mutableCopy
sur votreNSArray
objet de retour d'unNSMutableArray
contenant les objets précédents.OriginalL'auteur jimpic
NSArray
objets sont immuable de sorte qu'ils ne peuvent pas être modifiés. La seule option est de créer un nouveauNSArray
(par le biais d'un intermédiaireNSMutableArray
objet peut-être) et de mettre cette nouvelle matrice de retour dans la possession de l'objet (si elle le permet).OriginalL'auteur trojanfoe
Je me demandais ce que la différence de performances d'être entre l'aide d'
arrayByAddingObject
et la création d'une mutable copie, puis en ajoutant un élément.J'ai trouvé qu'il n'a pas d'importance.
Voici ce que j'ai utilisé
Comme vous pouvez le voir, je teste différentes taille des matrices. Tailles de 1, 10, 100 et 1 000 000 d'. J'ai trouvé quelle que soit leur taille, les temps sont très semblables les uns aux autres. Pour toute longueur, parfois, une méthode est plus rapide, et les autres, l'autre. Je devine en interne, ils font la même chose.
Voici la sortie de trois pistes:
Gardez à l'esprit que cela n'a été testé pour l'ajout d'un élément. Je soupçonne que (par exemple) l'ajout de 500 éléments de 1000 tableau de taille sera probablement plus rapide à l'aide de la seconde méthode, mais je le laisse de telles expériences à quelqu'un d'autre.
OriginalL'auteur Rob
C'est simplement une question piège.
NSArrays
sont immuables et ne peut être modifié sans la création d'un nouveauNSArray
ouNSMutableArray
à partir du tableau précédent, pure et simple.OriginalL'auteur Mark McCorkle