0

特定の種類の管理対象オブジェクトをすべて表示するテーブル ビューに取り組んでいます。ユーザーがスクロールして新しいセルを設定したときに常に障害が発生するのを防ぐために何かをする必要があるかどうか疑問に思っています。データソースで?

大量の管理対象オブジェクト (数百) について詳しくはわかりませんが、障害を発生させるとリソースが消費されることは理解しています。セルが表示されるたびに、管理対象オブジェクトにそのプロパティの 1 つを要求しています。テーブルビューセルを表示するために必要なすべての情報を備えたviewDidLoadで別の新しい配列を作成して、管理対象オブジェクトの繰り返しの障害を防ぐ必要がありますか?

これについて助けてくれてありがとう。

4

1 に答える 1

2

CoreDataの紹介資料がメモリ管理に時間を費やしていないのには理由があります。Core Dataはメモリの使用において非常に効率的であり、自動的に処理します。アプリでメモリ不足が発生した場合、アクティブにアクセスされていない場合、CoreDataはライブオブジェクトを障害に変換します。

テーブルの場合、フェッチされた結果コントローラを使用すると、すべての管理対象オブジェクトを1つのガルプでロードするのではなく、属性に直接アクセスするオブジェクトのみをロードします。たとえば、何千ものアルファベット順のオブジェクトを含むインデックス付きテーブルを使用するとします。テーブルが最初にロードされるとき、表示されているセルにデータを入力するために必要な10個程度の管理対象オブジェクトのみがメモリにあります。「Z」だけのインデックスを使用すると、「Z」の下に一度に表示されるいくつかのセルを表示するために必要な管理対象オブジェクトのみがメモリにロードされます。インデックス付けされていないテーブルをスクロールしても、テーブルは実際に読み取り可能な行のみのセルを要求することを知っているため、メモリ使用量は少なくなります。

時期尚早の最適化は、すべてのプログラミングの悪の原因です。時間を無駄にせず、複雑さを増して、決して起こらないかもしれない問題を防ごうとしてください。

コアデータの特定のケースでは、すべてのメモリ問題の95%を処理します。それがその大きな利点の1つです。CoreDataのメモリ使用にはほとんど注意を払っていません。

代わりに、最も単純な実装から始めてください。テストして問題が見つかるまで、メモリの使用について心配する必要はありません。

于 2010-08-09T11:10:51.217 に答える