4

ObjectiveCのimageNamedimageWithContentsOfFileの違いは何ですか

4

3 に答える 3

3

これら2つの方法の違いを説明する素敵なリンクを取得しました image named-vs-image with file の内容

于 2013-07-10T11:45:35.233 に答える
1

このSOリンクから

UIImage のメソッド imageNamed: と imageWithContentsOfFile: は、わずかに異なることを行います。imageNamed は特別なシステム キャッシュにイメージをロードし、その後、そのイメージ パスを使用して呼び出しを行うと、ディスクからイメージをリロードする代わりにキャッシュ内のイメージが返されます。imageWithContentsOfFile は、指定したパスに画像をロードするだけで、キャッシュは行いません。同じイメージに対して imageWithContentsOfFile を複数回呼び出すと、メモリ内に複数のコピーが作成されます。

メモリ警告が発行された場合、iOS はキャッシュを空にしないようです (まあ、まったく、私にはわかりません)。これにより、空きメモリが不足しているためにアプリが終了する可能性があります。imageWithContentsOfFile でロードされた UIImages は、イメージを消去し、必要に応じて再ロードすることでメモリ警告に応答します。これにより、メモリ スパイクが解消された理由が説明される場合があります。

また、キャッシュは実際のハードウェアよりもシミュレーターの方がはるかに大きいようです。imageNamed を使用した UIImages で見た問題とクラッシュは、デバイスでのみ発生しました。シミュレーターでテストするときは注意してください。

imageNamed を使用する唯一の理由は、同じ画像がビューで何度も使用されていることです。別の方法として、独自の画像キャッシュを実装し、ここで説明されているように、制御可能なキャッシュを持つ利点を得ることができます 。 /

こちらのリンクもご覧ください。

于 2013-07-10T11:39:29.487 に答える