6

tableView の reloadData がどれほど高価なのか疑問に思っています。テーブルビューを 5 秒ごとに更新したかったのです。それはパフォーマンスの問題を引き起こしますか?

4

3 に答える 3

5

データをリロードすると、テーブル ビュー データ ソースで 2 つの主要なメソッドが呼び出され、tableView に応じて、必要な表示セルがnumberOfRowsInSection反復処理されます。cellForRow:atIndexPath:contentOffset

アプリがすでに適切にスクロールしている場合、アプリが耐えることができる唯一のパフォーマンス ヒットは、多くの作業を行っている場合ですnumberOfRowsInSection(ネットワークへのアクセスや時間のかかる作業など)。

編集:前述のように、heightForRow:atIndexPath:異なる高さのセルに対して複雑な計算を行うために使用している場合、問題になる可能性もあります。

于 2012-09-13T23:10:12.960 に答える
0

@Jessedcの回答に加えて、

すべての行が同じ高さである場合、heightForRowAtIndexPathはよりも高価ですtableview.rowHeight

各行の高さが異なる行が多数あり、メソッドが呼び出されるたびに行の高さを計算している場合は、heightForRowAtIndexPathさらにコストがかかります。

reloadData通話料金の決定には多くの要因が関係しています。すべては、デリゲートメソッドが呼び出されるたびに何をどれだけ実行しているかによって異なります。

于 2012-09-13T23:29:07.810 に答える
0

状況に該当する場合、NSFetchedResultsController は、「n」秒ごとに更新するのではなく、データが変更されたときにテーブル ビューに通知できます。

于 2012-11-13T21:54:02.003 に答える