2009-04-03 4 views
2

Quelle est la meilleure approche entre l'utilisation de NSDictionary et NSObject avec NSStrings comme propriétés, en termes de performances plus rapides et de gestion efficace de la mémoire, si le code est écrit pour une application iPhone?NSDictionary ou NSObject avec NSStrings comme propriétés, lequel est le meilleur?

E.g. Si une application traite avec l'analyse d'un fichier XML qui est la suivante: < xml version = "1.0" encoding = "utf-8">

< FirstName> AAA </FirstName>

?

< MiddleName> BBB </MiddleName>

< LastName> ZZZ </LastName>

< âge> 28 </âge>

< Sexe> Homme </Sexe>

</Sync>

puis, tout en stockant les valeurs analysées, l'approche est plus efficace et appropriée, si la taille du fichier XML peut être un peu plus grande? Stockage des valeurs analysées dans un 'NSDictionary' par rapport aux 'clés' respectives (par exemple Key = FirstName Value = AAA) efficace et correct par rapport au stockage des mêmes données analysées dans les variables NSString (ie ayant des propriétés NSString de tous les nœuds intéressés pour stocker les valeurs respectives, par exemple NSString * firstName va stocker "AAA") d'une sous-classe 'NSObject'? Je recherche des performances plus rapides ainsi que l'efficacité de la mémoire.

+0

Vous devez marquer cette question comme objectif-c et iphone ou iphone-sdk. –

Répondre

1

En termes de performances, rien n'est mieux que d'effectuer réellement le test. Les gens ont déjà été surpris avec NSArray, ce qui semble être plus complexe que prévu, juste pour l'optimisation des performances.

En d'autres termes, je dirais que NSDictionary est plus flexible que le NSObject personnalisé, si de nouvelles propriétés devaient être ajoutées dans les futures versions de votre fichier XML. Dans couterpart, je dirais aussi que NSObject personnalisé avec des propriétés explicitement nommées est plus lisible, donc plus maintenable, que NSDictionary.

+0

Oui, je pense que tu l'as dit correctement. Cela dépend surtout de l'application. Eh bien, je dois encore tester les deux résultats, mais je suis plus enclin à penser que la flexibilité que je vais obtenir (en plus de pouvoir stocker les noms de nœuds de XML, en tant que clés) en utilisant NSDictionary est edge sur l'utilisation de NSObject –

0

Pas une vraie réponse: Vous pouvez également utiliser un NSArray avec codage clé-valeur, mais je ne sais pas sur les performances par rapport à NSObject/NSDictionary. Mais je suis sûr que l'utilisation de NSObject sera la plus rapide car il n'y a pas de frais généraux.

1

en termes de performances plus rapides et une gestion efficace de la mémoire

La réponse vient probablement vers le bas à votre application - combien de ces obejcts vous avoir, comment allez-vous y accéder - sont-ils écrits plus Lire

Je voudrais vous donner quelques conseils généraux - faites-le d'abord travailler, puis optimiser la vitesse et la taille si vous en avez besoin. N'optimisez pas quelque chose avant qu'il ne soit écrit.

Questions connexes