我是Objective C和XCode的新手,目前正在開發我的第一款iPhone遊戲。遊戲必須對超過250,000個單詞的拼字遊戲字典進行非常快速的拼寫檢查,理想的速度足夠快,可以在單個框架中檢查100多個字符串與單詞列表。我只寫了一個標準的二進制搜索,但是我不確定在目標C中使用NSString和NSArray等選項來實現這個最好的方法。XCode 4無法編譯一個非常大的數組,以及有關NSArray/NSString開銷的問題
目前最大的問題是它甚至不會編譯。如果我創建一個NSArray填充NSStrings,XCode只是掛起,但不會崩潰。我離開它編譯了大約30分鐘,沒有結果。我正在使用的代碼:
words=[NSArray arrayWithObjects:@"aa", @"aah", ...250,000 words... @"zyzzyvas" ,nil];
當wordlist減少到幾百字,它編譯和工作正常。
任何人都可以闡明爲什麼這是失敗的,或建議一個更好的方式去做呢?
接下來我要嘗試的是將詞表分成許多小塊;由第一個字母分隔,也許還有字母數量,但這意味着很多亂七八糟的重新格式化巨大的文本文件的試驗和錯誤,可能很有可能撞到同一堵牆。
這個問題的另一部分是關於NSArray的速度和NSString的開銷與一個老式的char指針,C風格的數組相比的一般性查詢。如果NSString包含頭部或函數指針或其他什麼的額外字節,那麼在iPhone應用程序中創建250,000個字節可能是錯誤的,對嗎?
任何建議都將不勝感激。
+1 - SQLite數據庫意味着您不必將整個列表加載到內存中。 – 2011-04-17 15:41:35