将uiimage设置为nil不会释放ARC的内存

我有一个滚动视图,显示不同的图像,像滚动浏览页面,如PhotoScroller。 我正在使用ARC。 当某人滚动到另一个页面时,我将UIImageView的image属性设置为当前不显示为零(试图)以避免内存崩溃,这仍然发生。 然后,当用户滚动到一个新的页面,该页面的图像被设置为UIImageView的图像属性,以及页面前后的页面(用于平滑查看)。 UIImage的页面都保存在一个数组中。 然而,当我滚动浏览页面时,内存使用量不断增加,就像将UIImageView的image属性设置为nil一样,不会从内存中释放它。 我使用initWithContentsOfFile初始化我的UIImages。 我试图用imageNamedimageWithContentsOfFile也没有运气。 这是我的scrollview代码:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
int indexShown = self.scrollView.bounds.origin.x / kScrollObjWidth;

 for(NSNumber *index in indexesToRemove) { UIImageView *imgViewToRemove = [[self.scrollView subviews] objectAtIndex:[index intValue]]; imgViewToRemove.image = nil; } [indexesToRemove removeAllObjects]; UIImageView *imgViewToReplace = [[self.scrollView subviews] objectAtIndex:indexShown]; [imgViewToReplace setImage:[pageUIImagesArr objectAtIndex:indexShown]]; [indexesToRemove addObject:[NSNumber numberWithInt:indexShown]]; if(indexShown != 0 && ![[[self.scrollView subviews] objectAtIndex:indexShown-1] image]) { imgViewToReplace = [[self.scrollView subviews] objectAtIndex:indexShown-1]; [imgViewToReplace setImage:[pageUIImagesArr objectAtIndex:indexShown-1]]; [indexesToRemove addObject:[NSNumber numberWithInt:indexShown-1]]; } if(indexShown != kNumImages-1 && ![[[self.scrollView subviews] objectAtIndex:indexShown+1] image]) { imgViewToReplace = [[self.scrollView subviews] objectAtIndex:indexShown+1]; [imgViewToReplace setImage:[pageUIImagesArr objectAtIndex:indexShown+1]]; [indexesToRemove addObject:[NSNumber numberWithInt:indexShown+1]]; } currentView = [[self.scrollView subviews] objectAtIndex:indexShown]; //check which view is being shown` 

UIImage的页面都保存在一个数组中。

当您将UIImageView的属性设置为nil时, UIImage不会被释放,因为数组仍然保存对它们的引用。 至于内存的增长,可能是其他的东西正在分配。 我build议使用Instrument的对象分配工具来查看滚动时的确切数据。