tableView の reloadData がどれほど高価なのか疑問に思っています。テーブルビューを 5 秒ごとに更新したかったのです。それはパフォーマンスの問題を引き起こしますか?
3 に答える
データをリロードすると、テーブル ビュー データ ソースで 2 つの主要なメソッドが呼び出され、tableView に応じて、必要な表示セルがnumberOfRowsInSection
反復処理されます。cellForRow:atIndexPath:
contentOffset
アプリがすでに適切にスクロールしている場合、アプリが耐えることができる唯一のパフォーマンス ヒットは、多くの作業を行っている場合ですnumberOfRowsInSection
(ネットワークへのアクセスや時間のかかる作業など)。
編集:前述のように、heightForRow:atIndexPath:
異なる高さのセルに対して複雑な計算を行うために使用している場合、問題になる可能性もあります。
@Jessedcの回答に加えて、
すべての行が同じ高さである場合、heightForRowAtIndexPath
はよりも高価ですtableview.rowHeight
。
各行の高さが異なる行が多数あり、メソッドが呼び出されるたびに行の高さを計算している場合は、heightForRowAtIndexPath
さらにコストがかかります。
reloadData
通話料金の決定には多くの要因が関係しています。すべては、デリゲートメソッドが呼び出されるたびに何をどれだけ実行しているかによって異なります。
状況に該当する場合、NSFetchedResultsController は、「n」秒ごとに更新するのではなく、データが変更されたときにテーブル ビューに通知できます。