我正在尝试存储 UIImage 中的数据NSArray ,实际上是 60 张图片,每张图片大小为 300kb。然后,我尝试为 中的图像制作动画。 UIImageView .
我的代码:
NSMutableArray *arr = [[NSMutableArray alloc] init];
for (int i=0; i<61; ++i) {
[arr addObject:[UIImage imageNamed:[NSString stringWithFormat:@"%i.png", i]]];
}
img.animationImages = arr;
img.animationDuration = 1.5;
img.contentMode = UIViewContentModeBottomLeft;
[img startAnimating];
当我在 iPad Simulator 4.3 中测试它时,它运行良好。
当我想在我的设备 (iPad 1) 上测试它时,应用程序 崩溃 .
注:如果我评论此代码,应用程序不会崩溃: [img 开始动画];
1. 可能是什么问题?我认为这是内存问题...?!
2. 我可以在 NSArray 中存储大量 UIImages 吗?
最佳答案
您的 png 文件可能有 300KB,但这是一种压缩格式。
要了解图像本身的大小,您应该乘以每个像素的宽度、高度和字节数。
即如果图像的大小为 1024 * 1024 和 RGBA 模型,则图像本身在内存中的大小为 4MB。这只是一张图片。如果您有 300 个,则大约为 120MB。
注意:这只是一个粗略的经验法则,但它给了你一个想法。
因此,您应该在数组中保留路径名并仅在需要时加载图像,并且应该调整缩略图的大小并作为文件存储在磁盘上。不要只是缩放 UIImageView。
这里是 a great article带有关于调整大小的代码。
关于ios - iPad中大量大图像的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8229346/