2009-08-23 1 views
1

iPhoneのビューコントローラの遅延読み込みの性質上、私のアプリは豊富なグラフィック要素(カスタムグラフィックスアセット)を持つさまざまな画面に初めてアクセスしたときに応答が少し遅くなります。事前に[UIImage imageNamed:...]を呼び出すことで、アプリの画像を事前にプリロードするので、次にキャッシュバージョンと呼ばれるときに代わりに使用されます。レイジーローディングは、iPhoneアプリのレスポンスが初めての場合、画像をプリフェッチできますか?

これは機能しますか?豊富なUIが含まれているビューコントローラの読み込みを高速化できる他のヒント(つまり、多くのカスタムグラフィックアセットが使用されています)

答えて

0

送信中の画像はキャッシュされますので、このメッセージを先に送信すると、次の画像取得が高速になります(キャッシュ内にあると仮定して)。 imageNamed:のマニュアルはhereです。

0

また、ビューコントローラを事前にロードし、[viewControllerビュー]を呼び出してビューを強制的に読み込むこともできます。

画像やペン先の読み込みが別のスレッドから安全に呼び出されるとは限りません。 init/viewDidLoad/etcがメインスレッドで実行されることが予想されるため、画像キャッシュがスレッドセーフ(NSMutableDictionaryがスレッドセーフIIRC)の場合、画像ロードは安全です。

メインスレッドでプリロードすると、UIがブロックされます。あなたはこれを緩和することができます。 performSelector:withObject:afterDelay:と小さな遅延(0.01?0.1?)を使用して、保証はありません。 OS 4では、[NSOperationQueue mainQueue]の操作で各画像を読み込むことができます。操作の優先順位を小さい値(0または0.1?)に設定すると、UIが確実に優先されます。

メモリー警告を受け取るほど多くのメモリーを使用すると、事前ロードは無意味です。

関連する問題