Hatena::Groupiphone-dev

iPhoneアプリ開発まっしぐら★ このページをアンテナに追加 RSSフィード

引っ越し後の日記はコチラです

tokoromのその他の日記

2009-09-10

UIImageのimageNamed:メソッドのキャッシュ不具合が OS 3.0 でなおった!?

10:45 | はてなブックマーク - UIImageのimageNamed:メソッドのキャッシュ不具合が OS 3.0 でなおった!? - iPhoneアプリ開発まっしぐら★

これまで、

id:mswarさん】の http://d.hatena.ne.jp/mswar/20090221/1235238034

id:grimleaperさん】の http://iphone-dev.g.hatena.ne.jp/grimleaper/20090221/1235247990

を参考にさせていただき、UIImageのimageNamed:メソッドの扱いは厳重注意だったのでした。

というのも、imageNamed:で同じ画像ファイルを何度も読み込むと、キャッシュが再利用されずにどんどん新しいキャッシュが溜まっていってしまう現象が発生していたからです(シミュレータでは再現せず、実機でのみ再現)。

そのため巨大な画像ファイルを何度も読み込むと、メモリが足りなくなってアプリが落とされてしまっていたのです。


なのですが、さきほど久々にOS3.0上で試してみたところ、imageNamed:メソッドで3MBのpngファイルを何度も何度も読み込んでみても、うまい具合にキャッシュが再利用されているようです。

逆に、initWithContentsOfFile:メソッドを使うと、キャッシュが使われず同じ画像でもメモリに新しくロードされるので、iPod Touch 2G だと、3MBの画像ファイルを3つ4つ読み込んだタイミングでアプリは強制終了してしまいます。

キャッシュの問題がなおったのであれば、だんぜんimageNamed:が推奨されるのですが・・・


みなさま状況はいかがでしょうか?

SIHOSIHO2010/08/02 11:33本を読ませていただいています。
キャッシュされるのは良い面もあるのですが、同じ名前のファイルでも差し替えになったので更新したいのですが、その場合もキャッシュが利用されてしまって、困ります。キャッシュをクリアする方法はないものでしょうか??

SIHOSIHO2010/08/02 11:391つ目のリンク先にあった記述で対応できました。
当方Xcode3.2なのですが、再発してしまっているみたいですね。