我试图实现一个简单的视频流,但由于某种原因我的内存不会被释放:
(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]);
内存将被释放。但是当我返回到以前的视图控制器时,应用程序会崩溃,因为它试图释放为该图像分配的内存,我已经释放了。此方法是从异步任务中调用的,该任务使用以下方法创建图像:
UIImage *image = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
CGDataProviderRelease(provider);
CFRelease(data);
据我了解,UIImage 现在拥有 CGImage,我不应该释放它。那么,当我用新图像更新 UIImageView 时,是否有确保 UIImage 被释放?