に配置したいオブジェクトが約5,000個ありますUITableView
。私は現在、格納されている配列から最初の50個を取り出し、それらを別の配列にコピーしてから、その配列をtableViewにロードするメカニズムを介してこれを行っています。willDisplayCell:forRowAtIndexPath
次に、テーブルが最後から2番目のセルに到達したときに、次の50を自動的にロードするために使用します。これは、以前にコピーを停止した場所を追跡するだけでこれを行い、次の50をコピーして、プロセスを繰り返します。
これは、まだ解決していない問題を引き起こします。たとえば、3番目の50をロードするときに、最初の50をアンロードする必要があります。したがって、0から50、次に50から100、次に100から150、そしてその時点で、0-50を削除する必要があります。ユーザーがリストの一番上にスクロールして戻る場合は、前の50を再度ロードする必要があります。基本的に、テーブルには一度に150を超えるエントリがないため、0-150、または50-200、または100-250、または150-300などになります。
私が疑問に思っているのは、これがこのようなものにアプローチするための最良の方法であるかどうかです。ユーザーがテーブルの最後までスクロールするときの速度低下の問題はありませんが、データの非同期ロードのようなものがより良いかどうか疑問に思っていますか?私はマルチスレッドに本当に慣れていませんが、それがより単純な方法になるのであれば、試してみたいと思います。
これがより意見に基づいた質問であることが問題にならないことを願っています。おそらく1つの決まった答えはないことを理解していますが、「実際の質問ではない」場合、私の質問は次のとおりです。上記のアプローチが最も効率的であり、大量のデータを徐々にロードする効果的な方法でUITableView
あり、マルチスレッド、遅延ロード、またはその他の手法を介して同様の効果を達成するためのより一般的な方法はありますか?
編集:セルの大部分には画像が含まれておらず、それらはほんの数例にすぎないことも指摘しておきUILabel
ます。