Pregunta

Actualmente estoy haciendo un juego de palabras para iOS que, durante la carga, se lee en un archivo de texto de alrededor de 30.000 palabras y los carga en un árbol de prefijo para la búsqueda rápida durante el juego. Esto funciona bien, pero el proceso de carga y el árbol de la construcción añade un notable pocos segundos para el tiempo de inicio de la aplicación. Por el momento estoy probando en un iPhone 4, pero me imagino que sería un trato bueno más lenta en un 3GS modelos anteriores.

¿Hay una manera de crear este árbol en tiempo de compilación en lugar de cuando la aplicación se abre? O, menos idealmente, sería posible precocido los datos con otro programa y añadir el fichero al proyecto en lugar de hacerlo en tiempo de ejecución? ¿Cómo voy a ir haciendo eso?

¿Fue útil?

Solución

Me encuentro con el mismo problema con un juego que hemos desarrollado, y para nosotros, que se comportaron mejor usar una base de datos SQLite con las palabras en lugar del árbol en la memoria. El PP utiliza menos espacio que el plist que representaba el árbol, que no nos requiere para cargar previamente en la memoria y el rendimiento (al consultar una palabra válida) era aproximadamente la misma.

Otros consejos

La respuesta de PGB es buena. Si no desea utilizar SQLite, puede almacenar los datos en un plist y tienen [NSDictionary dictionaryWithContentsOfFile:]. Crear un árbol para usted

Si no optar por tener los datos compilados en su programa, que tendrá que ser construida de tipos primitivos, como los números y caracteres. Entonces, las estructuras de uso y matrices para definir la estructura, y el uso de una variable constante para almacenar los datos. Aquí está un ejemplo sencillo que es sólo un conjunto de cadenas de caracteres:

const char *words[] = {"Word1","Word2","Word3"};
const unsigned numWords = (sizeof(words) / sizeof(char*));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top