objective-c - XCode 4 无法编译非常大的数组,以及有关 NSArray/NSString 开销的问题

标签 objective-c ios xcode4 nsarray

我是 Objective C 和 XCode 的新手,目前正在开发我的第一个 iPhone 游戏。游戏必须对超过 250,000 个单词的拼字游戏字典进行一些非常快速的拼写检查,理想情况下速度足够快,我可以在一帧中根据单词列表检查 100 多个字符串。

我之前用 C 和 actionscript 2 写过这个没有问题,只是使用标准的二进制搜索,但我不确定在 Objective C 中使用 NSString 和 NSArray 等选项实现这个的最佳方法。

目前最大的问题是它根本无法编译。如果我创建一个填充有 NSString 的 NSArray,XCode 只会挂起但不会崩溃。我让它编译了大约 30 分钟,但没有结果。我使用的代码:

words=[NSArray arrayWithObjects:@"aa", @"aah", ...250,000 words... @"zyzzyvas" ,nil];  

当单词列表减少到几百个单词时,它可以编译并正常工作。

谁能阐明失败的原因,或提出更好的解决方法?

接下来我要尝试的是将单词表拆分成许多更小的部分;由第一个字母分隔,也许还有字母的数量,但这意味着要重新格式化巨大的文本文件以进行反复试验,这很可能会遇到同样的问题。

这个问题的另一部分是关于 NSArray 的速度和 NSString 的开销的一般查询,与 C 风格的老式字符指针数组相比。如果 NSString 甚至包含一些额外字节的 header 或函数指针或其他内容,那么在 iPhone 应用程序中制作 25 万个它们可能是错误的做法,对吧?

如有任何建议,我们将不胜感激。

最佳答案

真的很想为此使用数据库 - 内置的 SQLite 是一个理想的解决方案。

就是说,如果您手头有现有的 C 解决方案,没有理由不能按原样使用它(这并不是说您使用 Cocoa 类毕竟),尽管您需要在考虑 iOS 设备的限制的情况下谨慎处理内存利用率。

关于objective-c - XCode 4 无法编译非常大的数组,以及有关 NSArray/NSString 开销的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693375/

相关文章:

iphone - 在 iPhone 中查找周数

objective-c - 如何获得 iphone 设备类型?

objective-c - Cocoa:获取 TableView 单元格来发送操作消息

objective-c - Xcode 调试器 - 为什么您只能逐步进入 Apple 框架代码?

ios - 钛合金回归测试

ios - 是否可以在 Swift 中为特定的 iOS 版本定义一个变量?在类(class)层面

ios - 使用iOS中的OCUnit在XCode 4.5中使用Core Data对象进行单元测试

xcode4 - XCode : The document: "<document name>" could not be saved. 文件已被另一个应用程序更改”

iphone - numberOfRowsInSection - 无法识别的选择器发送到实例问题

ios - 如何通过 AFNetworking 和 NSUrlSession 调用 SOAP Web 服务