Domanda

Attualmente sto facendo un gioco di parole per iOS che, durante il caricamento, si legge in un file di testo di circa 30000 parole e li carica in un albero prefisso per la ricerca rapida durante il gioco. Questo metodo funziona bene, ma il processo di caricamento e l'albero di costruzione aggiunge notevoli pochi secondi per il tempo di avvio del app. Al momento sto testando su un iPhone 4, ma immagino che sarebbe stato un buon affare più lenta su un 3GS modelli precedenti.

C'è un modo per creare questo albero in fase di compilazione, piuttosto che quando l'applicazione si apre? O, meno idealmente, sarebbe possibile precottura i dati con un altro programma e aggiungere il file al progetto, invece di farlo a tempo di esecuzione? Come potrei fare per fare questo?

È stato utile?

Soluzione

mi imbatto nello stesso problema con un gioco che abbiamo sviluppato, e per noi, ha eseguito meglio usare uno SQLite DB con le parole al posto degli alberi in memoria. Il DB usato meno spazio rispetto al plist che rappresentava l'albero, non ha richiesto noi per precaricare in memoria, e la performance (durante la ricerca di una parola valida) era circa la stessa.

Altri suggerimenti

La risposta di PGB è buona. Se non si vuole usare SQLite, è possibile memorizzare i dati in un plist e hanno [NSDictionary dictionaryWithContentsOfFile:]. Crea un albero per voi

Se si sceglie di avere i dati raccolti nel vostro programma, dovrà essere costruito di tipi primitivi, come i numeri e caratteri. Poi, strutture utilizzazione e matrici per definire la struttura, e utilizzare una variabile costante per memorizzare i dati. Ecco un semplice esempio che è solo un array di stringhe di caratteri:

const char *words[] = {"Word1","Word2","Word3"};
const unsigned numWords = (sizeof(words) / sizeof(char*));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top