我的应用程序具有三个视图UIImageViews
。大约有 150 张图片作为资源文件,每张 .jpg 文件大小约为 24k。该应用程序将显示所有图像,但一次只显示三个。
但是每次我单击按钮将三个图像加载到 中UIImageViews
时,Instruments 中的“Overall Bytes”列会增加大约 700K,直到我最终收到内存不足警告,然后应用程序崩溃。不知何故,我每次加载三张图像所使用的内存都没有被释放。
我已经四处搜索并尝试了我知道的所有方法,但没有成功,我需要帮助。
我试过这个:(这段代码是加载另外三个图像的动作的一部分。三个 ImageView 是imgShownLeft
、imgShownMiddle
和imgShownRight
。这些是实例变量。我首先必须放入currentImage
所有三个UIImageViews
,然后放入previousImage
左边的一个和nextImage
在右边:
NSString *strImageToSet = [[imgNamesArray objectAtIndex:currentImage] stringByAppendingFormat:@".jpg"];
UIImage *img = [UIImage imageNamed:strImageToSet];
[imgShownMiddle setImage:img];
[imgShownLeft setImage:img];
[imgShownRight setImage:img];
NSString *strPreviousImage = [[imgNamesArray objectAtIndex:previousImage] stringByAppendingFormat:@".jpg"];
img = [UIImage imageNamed:strPreviousImage];
[imgShownLeft setImage:img];
NSString *strNextImage = [[imgNamesArray objectAtIndex:nextImage] stringByAppendingFormat:@".jpg"];
img = [UIImage imageNamed:strNextImage];
[imgShownRight setImage:img];
然后我尝试了这个:而不是:
UIImage *img = [UIImage imageNamed:strImageToSet];
我用了:
UIImage *img = [[UIImage alloc] initWithContentsOfFile:strImageToSet];
并img
以UIImageViews
相同的方式分配,然后
[img release];
然后我尝试了:
UIImage *img = [[[UIImage alloc] initWithContentsOfFile:strImageToSet] autorelease];
然后我尝试了:
img = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[imgNamesArray objectAtIndex:currentImage] ofType:@"jpg"]];
但在每种情况下,每次运行此操作都会增加内存需求。
我知道可以一次加载三个图像,而无需在内存中保存 150 个图像!我究竟做错了什么?
感谢您的任何见解。/SD