Si vous chargez des objets depuis une base de données et que vous connaissez exactement le nombre d'objets que vous avez, vous obtiendrez probablement les meilleures performances avec NSMutableArray
s arrayWithCapacity:
et en y ajoutant des objets jusqu'à ce qu'elle soit pleine, de sorte qu'elle alloue toute la mémoire en une seule fois si elle le peut.
En coulisses, ils sont secrètement la même chose - NSArray
et NSMutableArray
sont toutes deux mises en œuvre avec CFArray
par le biais d'une passerelle gratuite (a CFMutableArrayRef
et un CFArrayRef
sont des définitions de la même chose, __CFArray *
) *
NSArray
et NSMutableArray
devraient avoir les mêmes performances/complexité (le temps d'accès étant O(lg N) au pire et O(1) au mieux) et la seule différence étant la quantité de mémoire que les deux objets utiliseraient - NSArray
a une limite fixe, tandis que NSMutableArray
peut utiliser autant d'espace que vous avez de libre.
Les commentaires dans CFArray.h ont beaucoup plus de détails à ce sujet.
* : Comme Catfish_Man le souligne ci-dessous, ce n'est plus vrai.