目前,我正在为iOS制作一个文字游戏,该游戏在加载时会读取约30000个单词的文本文件,并将其加载到前缀树中,以便在游戏玩法中快速搜索。这效果很好,但是加载和树构造过程为应用程序的启动时间增加了几秒钟。目前,我正在iPhone 4上测试,但我想在3GS较早的型号上,这将是一个很好的交易。

有没有办法在编译时而不是应用程序打开时创建这棵树?或者,理想情况下,是否可以使用另一个程序将数据预购并将该文件添加到项目中而不是在运行时进行?我该怎么做?

有帮助吗?

解决方案

我在开发的游戏中遇到了同一问题,对我们来说,使用单词而不是内存树的sqlite db进行了更好的表现。数据库所使用的空间要比代表树的PLIST少,它不需要我们在内存中预紧它,并且性能(在查询有效词时)的性能大致相同。

其他提示

PGB的答案很好。如果您不想使用sqlite,则可以将数据存储在plist中,并具有[nsdictionary dictionarywithContentsOffile:]为您创建树。

如果您确实选择将数据编译到程序中,则必须由数字和字符等原始类型构建。然后,使用结构和数组来定义结构,并使用常数变量存储数据。这是一个简单的示例,只是一个字符字符串的数组:

const char *words[] = {"Word1","Word2","Word3"};
const unsigned numWords = (sizeof(words) / sizeof(char*));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top