シンプルなビデオ ストリームを実装しようとしていますが、何らかの理由でメモリが解放されません。
(void)updateImage:(UIImage *)image{
self.indicator.hidden = TRUE;
//CGImageRelease([self.imageView.image CGImage]);
self.imageView.image = nil;
self.imageView.image = image;
[self.imageView setNeedsDisplay];
}
私が使用する場合
CGImageRelease([self.imageView.image CGImage]);
メモリが解放されます。しかし、以前のView Controllerに戻ると、すでに解放したその画像に割り当てられたメモリを解放しようとするため、アプリがクラッシュします。このメソッドは、以下を使用してイメージを作成する非同期タスクから呼び出されます。
UIImage *image = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
CGDataProviderRelease(provider);
CFRelease(data);
私が理解しているように、UIImage は CGImage を所有するようになったので、解放する必要はありません。UIImageView を新しい画像で更新したときに UIImage が確実に解放されるようにする方法はありますか?