Question

Je fais actuellement un jeu de mots pour iOS qui, lors du chargement, lit dans un fichier texte d'environ 30 000 mots et les charges dans un arbre de préfixe pour la recherche rapide pendant le jeu. Cela fonctionne bien, mais le processus de construction de chargement et l'arbre ajoute quelques secondes à temps notables de démarrage de l'application. En ce moment, je teste sur un iPhone 4, mais je pense que ce serait une bonne affaire plus lente sur un 3GS modèles précédents.

Y at-il un moyen de créer cet arbre au moment de la compilation plutôt que lorsque l'application ouvre? Ou, moins idéalement, serait-il possible de les données avec anode précuite un autre programme et ajouter ce fichier au projet au lieu de le faire lors de l'exécution? Comment dois-je procéder?

Était-ce utile?

La solution

Je rencontre le même problème avec un jeu que nous avons développé, et pour nous, il obtient la meilleure performance d'utiliser un SQLite DB avec les mots au lieu de l'arbre en mémoire. Le DB utilisé moins d'espace que la plist qui représentait l'arbre, il ne nous a pas besoin de le pré-charger en mémoire et les performances (lors de l'interrogation d'un mot valide) était sur le même.

Autres conseils

La réponse de PGB est bonne. Si vous ne souhaitez pas utiliser SQLite, vous pouvez stocker vos données dans un plist et ont [NSDictionary dictionaryWithContentsOfFile:]. Créer un arbre pour vous

Si vous choisissez d'avoir les données compilées dans votre programme, il devra construire des types primitifs, tels que chiffres et des caractères. Ensuite, les structures d'utilisation et des réseaux pour définir la structure, et utiliser une variable constante pour stocker les données. Voici un exemple simple qui est juste un tableau de chaînes de caractères:

const char *words[] = {"Word1","Word2","Word3"};
const unsigned numWords = (sizeof(words) / sizeof(char*));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top