検索

ホームページ  >  に質問  >  本文

ios - 关于tableview一个场景的疑问

有一个tablview列表, 打算显示类似通讯录的联系人列表, 右边是A-Z的导航, 可能数据量太大。假如一次从api返回10000个信息, 我的疑问是, 一次初始化10000个cell, 可行吗? 因为数据太多了, 本来想分页读取, 但是这种显示方式, 用分页不太合适。 或者有什么思路?

巴扎黑巴扎黑2887日前374

全員に返信(6)返信します

  • 阿神

    阿神2017-04-17 17:34:55

    まず、システム tableView のセルには再利用の仕組みがあり、標準ルーチンに従って書くと、すべてのセルが同じレイアウトなどであれば、一度に 10,000 個のセルを初期化することはありません。内容に一貫性がありません。

    内のこれらのセルにのみ存在します。

    返事
    0
  • 阿神

    阿神2017-04-17 17:34:55

    ローカル データを使用してみることができます

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:34:55

    サーバー側を変更する必要があり、各リクエストで約 30 ~ 40 個のデータが読み込まれます。
    フロントエンドのテーブルビューでは、ドロップダウン読み込みを通じて一度に複数のデータが読み込まれます。

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:34:55

    質問 19 と 20 を見てください: http://www.henishuo.com/ios-interview-middle-two/

    一度にこれほど多くのデータを保持することは決して不可能です。 tableview はスクロールビューを継承しており、contentsize を取得するためにこれを計算する必要があるため、データ ソースとして使用されるデータの数、行の高さの計算が何回行われるか、非常にスタックするか、初めての場合は待ち時間が長くなります。

    推奨事項: 初めてロードするデータは、10 個または 20 個などの少量のデータのみにしてください。次に、高さをキャッシュします。そのため、10,000 個のアイテムがあっても、高さがキャッシュされた後はスタックすることはありません (大量のリッチ テキストを含むものを除く)。

    記事内の行の高さを自動的に計算してキャッシュする方法を見てみましょう。

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 17:34:55

    tableviewcell の再利用メカニズムによると、これは考慮されていないようですが、実行してどのくらいのメモリを占有するかを試してください...

    返事
    0
  • 迷茫

    迷茫2017-04-17 17:34:55

    セル再利用メカニズムではこの問題を考慮する必要はありません

    返事
    0
  • キャンセル返事