0

約 580 のセクションに分割された非常に長いリスト要素を表示したいと考えています。UITableViewController を開くと、コントローラーをロードするのに 1 ~ 2 秒 (iPhone 5 の場合) かかります。コードをインストルメント化することで、テーブルの表示を遅らせるのは、すべてのセクションのタイトルに対して行う文字列操作であることがわかりました。定数文字列を返すと、パフォーマンスが大幅に向上します。

  • 質問 1: セルを遅延レンダリングして負荷を軽減しようとする一方で、UITableView がすべてのセクション ヘッダーを事前に構築するのはなぜですか?
  • 質問 2: どうすればよいですか? UITableView にそうしないように指示する方法はありますか、それともタイトルを Core Data 自体に保存しますか? 日付をセクション タイトルとして表示するため、場所、夏時間、言語などに依存するため、文字列として保存するのは賢明ではない場合があります。
4

1 に答える 1

0

あなたの質問 (「コア データにタイトルを保存しますか?」) から、コア データにセクション タイトルを保存していないことが分かります。おそらく、メモリなどで何らかの配列を使用しているため、テーブルビューのデータソースメソッドが何であるかに関係なく、500 個の文字列すべてを計算する必要があります。

代わりに、完全に最適化された を使用する必要がありますNSFetchedResultsController。作成時に適切なsectionNameKeyPath値を指定すると、テーブル ビューがすぐに読み込まれることがわかります。

于 2013-11-15T10:20:12.130 に答える