0

これは私の最初の iOS アプリであり、ここで何が間違っているのかを理解しようとしています。アプリが起動し、応答するまで数秒間ハングします。アプリは Web を経由し、起動時にそこから画像を取得します。次に、テキストを追加して画像からビューを作成します。ビューを構築する関数は非常に長いですが、基本的には、オブジェクトごとに Web から画像データを取得しています。私はこれらの方法を使用します:

NSURL *url = [NSURL URLWithString: 
   @"http://mysite.com/images/best_trip_ever.png"];
UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]];

アプリの起動時に何十回も発生しているので、これがパフォーマンス ヒットの 1 つの理由ではないかと考えました。

私が作成しているビューは、作成したビューにサブビューを追加することによって作成されています。Web から取得した画像を含むすべてのオブジェクトで発生しています。

またtable view、各行について、同じ方法を使用して、Web から取得した画像から再びテーブル ビューに素敵な行を表示しています。テーブルビューで非常に目立つのは、下にスクロールするとセルが動かなくなり、スムーズに動かないことです。

オブジェクトごとに、データを取得してオブジェクトに書き戻すメソッドを使用して、データをオブジェクトに格納しNSDataますencode/decode

ネットワークからの画像の取り込みが非常に遅くなるかどうかはわかりません(私の意見では、それほど遅くはないはずです。7〜8秒かかるかもしれません!)または、ビューを構築する行為ですか?画像から。

アプリができるだけ早く起動するのであれば、利用可能になるまで各画像のスピナー回転シンボルを表示してもかまいません。

何か案は?

4

2 に答える 2

2

アプリのメインスレッドでインターネットからデータにアクセスしています。それは常に悪いことであり、ハングの原因となっています。LazyTableImages という Apple のサンプル プロジェクトを見てください。バックグラウンドで画像をロードすることで、この正確な問題を解決します。

于 2012-10-13T20:13:33.090 に答える
2

https://github.com/rs/SDWebImage

画像を非同期的にロード/キャッシュするための非常に便利なフレームワークです

于 2012-10-13T20:17:27.220 に答える