2011-08-03 1 views
1

私は、UIImageViewオブジェクトに配置された多数の小さな画像を使用しています。現在、メモリ警告、バックグラウンドでの滞在など、後で発生する可能性のある問題を予見しようとしています。私のアプリは10Mb未満ですが、それでも少し気になります。その理由は、多くのUIImageViewsが画面にロードされた後、アプリがバックグラウンドに移行し、その後長い時間が経過したときに、アプリがどのように状況に対処するのかが分かりません。画面上のすべてのUIImageViewをリロードする必要がありますか?iOSはUIImageViewオブジェクトのキャッシング/復元にいくつかのメカニズムを使用していますか?

私は、iOSがバックグラウンドでUIKitデータ(画像ビューなど)に対処することを読んだことがあります。そして、私はこれを復元することについて心配する必要はありません。私のUIImageViewオブジェクトがappディレクトリからPNG画像ファイルを直接使用するのであれば問題ありません。しかし、私はspritesheets(いくつかの画像が内部に詰め込まれたファイル)を使用していて、CGImageCreateWithImageInRectでそれらの画像を引っ張って、ある時点でUIImageViewに渡しています。さて、私は自分自身に疑問を呈しています.iOSが画面上のUIImageViewオブジェクトをキャッシュするか、またはアプリケーションがアクティブになったときに手動でUIImageViewsをリロードする必要がありますか?私は多くのアプリがバックグラウンドで実行されている場合、私の背景のアプリが殺されるかもしれないと私は理解しています。しかし、私のアプリがまだ生きている(バックグラウンドで)が、UIImageViewオブジェクトがリリースされている状況が心配です。知識と洞察を共有してください:)

答えて

0

"バックグラウンド"アプリケーションの現在の実装は完全なスナップショットを行いますあなたのアプリのメモリの。このようなアプローチは、変更されていない状態のメモリから完全に終了した後にアプリケーションが復元されることを保証します。これは、アプリケーションの復元をサポートするためにコード生成画像などの永続化などの追加の操作を行う必要がないことを意味します。 UIApplicationDelegateインスタンスのapplicationDidReceiveMemoryWarning内でクリーンアップロジックを実装しない場合、UIImageViewは自動的にアンロードされません。しかし、キャッシュされたUIImageのために実装された自動クリーンアップロジックは、imageNamedメソッドによってロードされました。

+0

ありがとうございました。 UIKitオブジェクトで作業するときの安全性に関するもう1つの意見:)私は、あなたが「しかし、キャッシュされたUIImagesのために実装された自動クリーンアップロジックがimageNamedメソッドを通して読み込まれました。あなたはそれを明確にすることができますか? – Centurion

+0

それは本当です。バックグラウンドアプリがOSによって殺されると、データは保存されません。また、それらを開いても、自分で保存していない限り、以前のセッションのデータは復元されません。 –

関連する問題