在 iOS 6.1 上,我有一个带有 scrollView 的视图控制器,当用户浏览页面时,我需要在其中显示一些图像。scrollView 有 3 个子视图,分别显示当前、上一个和下一个图像。在滚动期间替换图像。该机制工作正常,但资源没有按预期释放,并且应用程序在滚动大约 15 张图像后终止。
起初我尝试简单地将新图像分配给 UIImageView 来解决问题,但它不起作用(我读到图像被缓存),所以我尝试了一种不同的方法:
// access the UIImageView of the currentView
for (UIView *subviewOfCurrentView in [currentView subviews]) {
if ([subviewOfCurrentView isKindOfClass:[UIImageView class]]) {
UIImageView *cv = (UIImageView *)subviewOfCurrentView;
//cv.image = nil;
[cv removeFromSuperview];
UIImageView *new_cv = [[UIImageView alloc] initWithFrame:photoRect];
new_cv.image = [UIImage imageNamed:[myObject getFileName];
[currentView addSubview:new_cv];
}
}
使用 Activity Monitor 分析应用程序显示,当我轻弹图像时,实际内存使用量不断增长,尽管子视图的数量保持不变。
请注意,应用程序在没有调用 didReceiveMemoryWarning 的情况下终止。
如何强制我的应用释放 UIImage(s) 和 UIImageView(s) 使用的内存?
如果你能帮助我,不胜感激。