Memory leaks 滚动UIImageViews获取“内存不足警告”

Memory leaks 滚动UIImageViews获取“内存不足警告”,memory-leaks,uiscrollview,uiimageview,uiimage,Memory Leaks,Uiscrollview,Uiimageview,Uiimage,我的应用程序相对简单——基本上是一个UIScrollView,可以查看几百个大型JPEG。然而,它总是在低内存警告下崩溃 滚动视图由三个UIImageView组成:上一页、当前页和下一页。启动时,每次滚动当前页面时,我都会用新的UIImages重置三个UIImageView 在分配中运行时,在应用程序运行期间,UIImage对象的数量保持不变,但临时UIImage对象的数量可能会增长得相当高 这是个问题吗?是否有某种方式可以“释放”UIImage对象?我认为这一定是内存泄漏的根源,对吗?在我看来

我的应用程序相对简单——基本上是一个UIScrollView,可以查看几百个大型JPEG。然而,它总是在低内存警告下崩溃

滚动视图由三个UIImageView组成:上一页、当前页和下一页。启动时,每次滚动当前页面时,我都会用新的UIImages重置三个UIImageView

在分配中运行时,在应用程序运行期间,UIImage对象的数量保持不变,但临时UIImage对象的数量可能会增长得相当高


这是个问题吗?是否有某种方式可以“释放”UIImage对象?我认为这一定是内存泄漏的根源,对吗?

在我看来是正确的。在将新图像附加到图像之前,可以尝试将图像属性显式设置为nil。previousPage.image=nil;previousPage.image=[UIImage imageWith…]这没有帮助,但谢谢joern。我喜欢你的博客!JPEG本身是否可能太大,我的iPad2无法处理任何数量的JPEG?它们的范围最大可达10MB,最大可达4000x3000+像素。这可能是一个因素。你有没有使用仪器查看过你的应用程序的内存使用情况?内存使用情况到处都是。我可以很容易地得到高达300 MB的物理内存使用,并很容易下降到几MB的物理内存自由。以及多个内存不足警告-这将很快或稍后使iPad2上的应用程序崩溃。-我想我应该尝试的下一个测试是,在像素尺寸和JPEG质量方面都要小得多的图像如果它在分页过程中工作了一段时间,但随后由于内存错误而崩溃,它与图像大小基本上没有关系,尽管这些图像相当大。如果它可以加载其中三幅图像,那么这项技术应该允许稳定地使用内存,假设不考虑分辨率,图像的大小基本相同。请注意,在翻页时,不需要多次重新加载相同的大型图像文件-更好的设计只能加载一次这些图像。
NSString *previousPath = [[NSBundle mainBundle] pathForResource:previousName ofType:@"jpg"];
previousPage.image = [UIImage imageWithContentsOfFile:previousPath];
currentPage.image = [UIImage imageWithContentsOfFile:currentPath];
nextPage.image = [UIImage imageWithContentsOfFile:nextPath];