UIImage内存不释放VM:ImageIO_JPEG_DATA?

我在屏幕上有多个水平滚动的collections视图。 他们都充满了图像。 所有这些图像都通过Parse api在后台加载。 我正在运行Instrument的分配和匿名VM:ImageIO_JPEG_DATA类别占用了正在使用的大部分内存。 应用程序中的所有内存大约等于40,然后这个类别超过55,这就使总数大约为100.这个类别从来没有下降过,只是保持一致。 我能做些什么来从我的collections视图中的图像中释放这些内存?

以下是我的collections视图的代码:

.m为我的collections视图控制器

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CollectionViewCell" forIndexPath:indexPath]; if (cell) { [cell.loadingImageIndicator setHidden:NO]; [cell.loadingImageIndicator startAnimating]; id photo = [self.collectionViewPhotos objectAtIndex:indexPath.item]; if ([photo isKindOfClass:[PFObject class]]) { PFObject *photoObject = (PFObject *)photo; PFFile *imageFile = [photoObject objectForKey:kPhotoPictureKey]; [cell.cellImage setFile:imageFile]; [cell.cellImage loadInBackground:^(UIImage *image, NSError *error) { [cell.cellImage setContentMode:UIViewContentModeScaleAspectFill]; [cell.loadingImageIndicator stopAnimating]; [cell.loadingImageIndicator setHidden:YES]; }]; } else if ([photo isKindOfClass:[UIImage class]]) { [cell.cellImage setImage:photo]; [cell.cellImage setContentMode:UIViewContentModeScaleAspectFill]; } } return cell; } 

.m为CollectionViewCell

 - (void)prepareForReuse { self.cellImage.image = nil; } - (void)dealloc { self.cellImage = nil; } 

编辑:仪器的照片 在这里输入图像说明

我在照片库types的应用程序中遇到了同样的问题,并且遇到了同样的问题,即所谓的ImageIO_JPEG_DATA类别中的分配会累积并永久保留“活动”,从而导致我的应用程序内存不足。 奇怪的是,这只发生在我正在testing的iPad上,而不是在ios模拟器(显示没有内存问题)。

布赖恩的build议(下)为我工作。 我的应用程序最初使用的是一个数组,其中每个元素都包含一个UIImage。 这些图像被用在各种UIScrollViewControllers中。

当我需要加载图像,如果我使用

[UIImage imageWithContentsOfFile:path]

而不是直接引用数组中的UIImage,内存问题(由ImageIO_Malloc所做的一些无法解释的caching导致)消失了,ImageIO_JPEG_DATA分配停止堆积并释放。

我永远不会拿出这个解决scheme在我自己的亿万年,所以谢谢布赖恩。