imageWithDataを使用してインスタンス化するUIImageがあります:(データは[NSDatadataWithContentsOfFile:]を使用してバンドルからロードされます)。
次に、次のように画像を描画します。
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が有効で、ビューに描画された場合、メモリ使用量は2倍になり、UIImageの割り当てが解除された後、UIImageが1つだけ存在した場合と同じ量に戻りますか?
今、別のルートを下ります。
[UIImage imageNamed:]を使用して画像をインスタンス化した場合、UIImageクラスには独自の種類の画像キャッシュがあり、特定の画像の1つの真のインスタンスのみを保持します(その1つの画像を表すために作成されたUIImageインスタンスの数に関係なく) )。
私の他の質問は次のとおりです。コンテキストに画像を描画してからUIimageが解放された場合(実行ループの最後に自動解放を介して)、キャッシュ内の画像はどうなりますか?画像はキャッシュに残り、メモリを消費しますか?他のUIImageインスタンスが使用していないため、削除されていますか?
どんな助けでも素晴らしいでしょう、ありがとう!