1

約10,000行を表示する必要があるテーブルビューがあります(データはsqliteにローカルに保存されています)

しかし、そのビューにジャンプすると、これらすべての行が読み込まれるため、アプリはブロック (フリーズ) されます。

UIをフリーズせずにデータをロードする方法はありますか?

PS。私たちのアプリが拒否されたのは、この理由によるものですか?

ありがとう

編集:彼らは拒否し、次の情報を提供しました「こんにちは。

あなたのアプリには iOS のネイティブ機能がありません。

iOS デベロッパ センターhttp://developer.apple.com/devcenter/iosで入手できる、「Getting Started video: The Ingredients of Great iPhone Apps」および「iPhone User Interface Design」のビデオをチェックして、アプリの設計情報を確認してください。、iOS ヒューマン インターフェイス ガイドラインhttp://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/MobileHIG.pdf、特に「優れた iOS アプリはプラットフォームと HI 設計原則を採用する」セクションhttp://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/Introduction/Introduction.htmlおよび「ヒューマン インターフェイスの原則」http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/Principles/Principles.html%23//apple_ref/doc/uid/TP40006556-CH5-SW1 ."

4

2 に答える 2

1

1 万行ある場合は、オンデマンドでデータをロードするしかありません。そうしないと、アプリが適切なレベルで実行される可能性がなくなります。あなたが説明したようなフリーズは、アプリが拒否されたことを確認するには間違いなく十分です1

このアプローチは、メモリーに関してもかなり無駄です。1 万行のうち、一度に必要な行数は多くても 2 ダースしかないからです。

処理を高速化するかなり簡単な方法は、データのページ (たとえば、1 ページあたり 10 アイテム) を準備し、NSCacheレコードの総数を取得するコードを追加し、データを取得するコードを変更して単一のレコードからレコードを読み取ることです。ページ(を使用LIMIT/OFFSET)。テーブルに行が表示されたら、キャッシュから行のページを取得しようとする必要があります。ページがそこにない場合は、sqlite からロードして、キャッシュに入れる必要があります。ページを使用すると、データベースへの往復回数が最小限に抑えられます。キャッシュを使用すると、メモリの最適な使用を管理できます。


1今回はアプリがフリーズのために拒否されたようには見えませんが、「ネイティブ iOS 機能の欠如」を修正すると、フリーズによって別の拒否がトリガーされます。

于 2012-09-01T11:54:11.723 に答える
0

画像とともにすべてのデータの遅延ロードについては、このデモを確認してください。

このサンプルは、UITableView を読み込んで表示するための多段階アプローチを示しています。RSS フィードから関連するテキストをロードすることから始めて、テーブルをできるだけ速くロードできるようにし、次に各行の画像を非同期でダウンロードして、UI の応答性を高めます。

于 2012-09-01T11:54:25.647 に答える