3

UIImage に関連するメモリの問題をグーグルで調べたところ、問題について話している多くのスレッドに出くわしましたが、実際の助けや解決策はありませんでした。

-imageNamed:オブジェクトを使用するとキャッシュされることがわかっているので、 を使用することをお勧めしますinitWithData:。と を使用するdrawRect:UIGraphicsGetImageFromCurrentImageContext()、画像はキャッシュされますか?

また、次のコードで:

CGImageRef tmp = CGImageCreateWithImageInRect(imageToCrop.CGImage, clippedRect);    //pull the image from our cropped context    UIImage *cropped = [UIImage imageWithCGImage:tmp];//UIGraphicsGetImageFromCurrentImageContext();  
CGImageRelease(tmp);

ドキュメントにこれに関する言及はありませんが、キャッシュは行われますか? キャッシュによって消費されるメモリを解放するにはどうすればよいでしょうか?

4

1 に答える 1

0

最初の質問に対する答えはわかりませんが、2 番目の質問に関する限り、UIImage の CGImage プロパティにアクセスすると、画像全体がメモリに読み込まれることに注意してください。これは、CGImage プロパティのドキュメントで参照されています。

使用後に画像を使い終わったら、UIImage で release メソッドを呼び出すだけで、メモリを解放できます。保持したいがキャッシュから削除したい場合は、イメージをディスクに書き込んで解放し、次を使用して新しいイメージを作成する以外に方法は考えられません-initWithData:

于 2009-10-07T15:18:38.663 に答える