주제와 관련하여 여러 스레드를 읽었지만 문제가 계속 발생합니다. 나는 다음 코드를 사용하여 이미지의 크기를 조정있을 때 : UIImage의 크기를 조정할 때 메모리 누수가 발생했습니다.
extension UIImage {
func thumbnailWithMaxSize(image:UIImage, maxSize: CGFloat) -> UIImage {
let width = image.size.width
let height = image.size.height
var sizeX: CGFloat = 0
var sizeY: CGFloat = 0
if width > height {
sizeX = maxSize
sizeY = maxSize * height/width
}
else {
sizeY = maxSize
sizeX = maxSize * width/height
}
UIGraphicsBeginImageContext(CGSize(width: sizeX, height: sizeY))
let rect = CGRect(x: 0.0, y: 0.0, width: sizeX, height: sizeY)
UIGraphicsBeginImageContext(rect.size)
draw(in: rect)
let thumbnail = UIGraphicsGetImageFromCurrentImageContext()!;
UIGraphicsEndImageContext()
return thumbnail
}
override func viewDidLoad() {
super.viewDidLoad()
let lionImage = UIImage(named: "lion.jpg")!
var thumb = UIImage()
autoreleasepool {
thumb = lionImage.thumbnailWithMaxSize(image: lionImage, maxSize: 2000)
}
myImageView.image = thumb
}
가 ... 메모리가 해제되지 않습니다. 따라서 여러 ViewController (예 : PageViewController)를 탐색 할 때 메모리 경고가 발생하여 결국 앱이 다운됩니다. 또한 성공없이 UIImage (contentsOfFile : path)를 통해 이미지를로드하려고했습니다. 제안 사항이 있으십니까?
UIGraphicsGetImageFromCurrentImageContext()는 오토 릴리즈있는 UIImage를 반환 :
그게 다야! 고맙습니다. – Thoms