我有一个显示图像并将其缩放到特定大小的应用程序。
这是缩放的代码:
static func scaledImage(originalImage image: UIImage, scaledToSize size: CGSize) -> UIImage {
UIGraphicsBeginImageContextWithOptions(size, true, 0.0)
image.drawInRect(CGRectMake(0, 0, size.width, size.height))
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return scaledImage
}
这是调用函数的方式:
for i in 0 ..< images.count{
if let data = images[i].imageData, let originalImage = UIImage(data: data) {
previewImage = scaledImage(originalImage: originalImage, scaledToSize: desiredSize)
}
}
该应用程序崩溃了50张图像
当我使用仪器查找分配内存的位置时,它告诉我此行分配了960 MB:
image.drawInRect(CGRectMake(0,0,size.width,size.height))
这是很多内存。
所以我的问题是,这里做错了什么?
如何解决内存泄漏。
我搜索了许多有关如何缩放图像的示例,但它们或多或少都是相同的。没有关于内存管理的示例,由于我在图像处理方面经验不足,因此我不知道如何解决该问题。
在这里的任何帮助将不胜感激。
提前致谢
最佳答案
您必须自动释放对scaledImage的调用。
autoreleasepool {
previewImage = scaledImage(originalImage: originalImage, scaledToSize: desiredSize)
}