質問

私は現在、iOSのワードゲームを作成しています。ロードすると、約30000ワードのテキストファイルを読み取り、ゲームプレイ中にすばやく検索するためにプレフィックスツリーにロードします。これはうまく機能しますが、読み込みとツリーの建設プロセスは、アプリの起動時間に顕著な数秒を追加します。現時点では、iPhone 4でテストしていますが、以前の3GSモデルではかなり遅いと思います。

アプリが開いたときではなく、コンパイル時にこのツリーを作成する方法はありますか?または、それほど理想的では、別のプログラムでデータを事前ベートして、実行時に行う代わりにプロジェクトにそのファイルを追加することは可能でしょうか?どうやってそれをしますか?

役に立ちましたか?

解決

私が開発したゲームで同じ問題に遭遇しました。私たちにとっては、メモリの木ではなく単語のあるSQLite DBを使用する方が良いでしょう。 DBは、ツリーを表すプリストよりも少ないスペースを使用しましたが、メモリ内でプリロードする必要はなく、パフォーマンス(有効な単語のクエリの場合)はほぼ同じでした。

他のヒント

PGBの答えは良いです。 SQLiteを使用したくない場合は、データをPlistに保存して[nsdictionary dictionarywithcontentsoffile:]ツリーを作成できます。

データをプログラムにコンパイルすることを選択した場合、数字や文字などの原始的なタイプで構築する必要があります。次に、構造と配列を使用して構造を定義し、定数変数を使用してデータを保存します。ここに、文字列の単なる配列である単純な例があります:

const char *words[] = {"Word1","Word2","Word3"};
const unsigned numWords = (sizeof(words) / sizeof(char*));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top