我有一个应用程序可以显示图像并将其缩放到特定尺寸。 这是缩放代码:
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)
}
关于ios - 使用 SWIFT 在 iOS 中缩放图像时出现内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36843994/