私はかなり大きな MutableDictionray をロードしている私のプログラムであり、UIProgressBar を使用したいと考えています。これを機能させるための読み込み時間を決定する方法について誰か提案がありますか?
ありがとう
私はかなり大きな MutableDictionray をロードしている私のプログラムであり、UIProgressBar を使用したいと考えています。これを機能させるための読み込み時間を決定する方法について誰か提案がありますか?
ありがとう
これに対する簡単な答えが見つかるとは思いませんが、ここにいくつかの指針があります。現在、これを でロードしていると思います-dictionaryWithContentsOfFile:
。
まず、長時間の読み込みをユーザーに待たせるのではなく、データ ストレージを変更することを検討してください。Core Data は、非常に大きな Dictionary よりも優れたツールである可能性があります。
プログレスバーを更新できるように、ファイルをチャンク化するためにファイルをNSData
usingに読み込みます。-[NSFileHandle readDataOfLength:]
これをバックグラウンド スレッドで実行して通知を投稿するか、メイン スレッドでデリゲート メソッドを呼び出して進行状況インジケーターを更新できます。
を試してみるとよいでしょう-readInBackgroundAndNotify
。iPhone の頭のてっぺんからのバッファ サイズはわかりませんが、適切な間隔で通知を返すのに十分小さい可能性があり、独自のバックグラウンド スレッドを管理する必要がなくなるはずです。
データを に読み込んだら、NSData
を使用して解析し+[NSPropertyListSerialization propertyListFromData:mutabilityOption:format:errorDescription:
ます。うまくいけば、これは何もハングしないように十分に高速である必要がありますが、遅すぎる場合は、バックグラウンド スレッドでこれを実行し、最後の進行状況バーの更新の一部にすることができます。ここで UI をスムーズにするには、いくつかの実験が必要になる場合があります。