【问题标题】:Selecting a sentence from a huge string从一个巨大的字符串中选择一个句子
【发布时间】:2012-08-06 02:52:07
【问题描述】:

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

这是代码(我缩短了分号):

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 中并调用 DB 来获取随机句子,但是有没有更好的方法来做到这一点?例如。从text filePlist file 读取随机行?如果是这样,我该怎么做? 记忆力当然是最重要的方面之一。

【问题讨论】:

    标签: objective-c ios memory-management nsstring nsarray


    【解决方案1】:

    你可以先不复制整个数组,然后用 memcpy 占用两倍的内存。

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

    除此之外,将其放入 sqlite 并进行查询,您不会将所有这些东西都放在内存中。如果这是 iOS,我肯定会将这些数据转储到 sqlite。任何大小的 ref 数据都不应该在内存中。

    这对于 Sqlite 来说是最重要的......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 2023-03-10
      • 2012-02-03
      • 1970-01-01
      相关资源
      最近更新 更多