imageWithDataを使用してインスタンス化しているUIImageがあります(データは[NSData dataWithContentsOfFile:]を使用してバンドルからロードされます)。iPhoneのビューに描画するときのメモリ管理
私はそのようにのようなイメージを描いています:
NSData *imageData = [NSData dataWithContentsOfFile:fileLocation];
UIImage *myImage = [UIImage imageWithData:imageData];
//These lines are superfluous from what I can tell, replacing with
//UIImage *myImage = [UIImage imagedNamed:imageName]; very soon.
[myImage drawAtPoint:CGPointMake(0,0)];
//myImage will be released at the end of the run loop
私の質問はこれです:作成したUIImageが自動解放されます。 UIImageがビューに描画され、UIImageの存在が解消されたときのメモリの状況はどうなりますか。明らかに、視覚的には、画像は文脈に描かれているので、そこにはまだあります。
UIImageが有効で、ビューに描画されている場合はメモリ使用量が倍になりますが、UIImageの割り当てが解除された後にUIImageが1つしか存在しない場合と同じ量に戻りますか?
ここで別のルートを下ります。
イメージをインスタンス化するために[UIImage imageNamed:]を使用した場合、UIImageクラスには独自のイメージ・キャッシュがあり、作成されるUIImageインスタンスの数に関係なく、特定のイメージの真のインスタンスが1つだけ保持されますその1つの画像を表す)。
私の他の質問は、コンテキストに描画してUIimageを解放すると(キャッシュのループ終了時に自動解放によって)、キャッシュ内の画像はどうなりますか?イメージはキャッシュ内のメモリを消費しますか?それは他のUIImageインスタンスがそれを使用していないので削除されますか?
ご協力いただきありがとうございます!
もっと徹底したコードを教えてください。 –
私が正直であれば、提供するコードはそれほど多くありません。私はそこにないものを追加します。 – Jasarien