【发布时间】:2013-01-07 05:49:56
【问题描述】:
我正在尝试实现一个简单的视频流,但由于某种原因我的内存不会被释放:
(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 被释放?
【问题讨论】:
-
可能重复:stackoverflow.com/questions/1402148/imagewithcgimage-and-memory(看看我觉得会很有帮助)
-
是的,在某种程度上。然而,我的问题是 UIImage 没有发布。正如您在上面的代码中看到的那样,我按照线程中的建议小心并释放 CGImage。也许我的问题有点不清楚,如果是这样,请告诉我。
标签: ios memory-leaks uiimageview uiimage automatic-ref-counting