2012-08-08 102 views
0

我正在优化一个objective-c应用程序,并且在那个应用程序中有一个包含大约4000个句子的大型NSString;不要问为什么......但有。 它随机选择一个句子并返回。从一个巨大的字符串中选择一个句子

这是代码(I shortend的centenses):

NSString *sentences[] = {@"For crying out loud", @"Too much information", @"Tomorrow", @"Tonight", @"I don't know", @"Forever and ever ", @"Lets get high", @"Foreigner ", @"Sick"}; 

self.responses = malloc(sizeof(self.responses)/sizeof(void*)); 
memcpy(strings, self.responses, sizeof(sentences)/sizeof(void*)); 

[...] 

[self performSelector:@selector(didRecieveMessage:) withObject:self.responses[rand() % sizeof(self.responses)] afterDelay:rand() % 15 + 2]; 

现在,这需要优化。我正在考虑将这些句子包含在SQLLite Db中,并且调用数据库来获取随机句子,但是有没有更好的方法来做到这一点?例如。从text filePlist file读取一条随机线?如果是这样,我该怎么做?内存当然是最重要的方面之一。

回答

0

那么你可以从不复制整个数组开始,占用memcpy的两倍。

我在这里看到一些剪切和粘贴雾,但很明显应该做的是使用NSArray作为初始数组,而不是整个数组的memcpy。

除此之外,它把它放在sqlite中,并做一个查询,你不会有所有这些东西在内存中。如果这是iOS,我肯定会将这些数据转储到sqlite中。任何尺寸的参考数据都不应该在内存中。

这是素数的Sqlite ....

+0

好的,谢谢。然后我会尝试SQLLite – user1580250 2012-08-08 22:20:38

相关问题