Освободить память после завершения задания UIGraphicsImageRenderer
В нашем приложении мы должны вырезать несколько изображений. После того, как изображения были вырезаны и показаны, они нам больше не нужны. Но память не отпускает. Даже если я вообще не использую переменную clippedImg, память не освобождается после работы UIGraphicsImageRenderer, несмотря на то, что класс MyClass был успешно удален.
Переменная clippedImg - это даже просто переменная метода. Я точно этого не понимаю.
Как освободить память?
class MyClass {
deinit {
print("DEINIT \(Self.self)")
}
func createcreatePuzzleImage(image: UIImage, cropRect: CGRect, path: UIBezierPath) {
var clippedImg = clipImage(original: image, toPath: path)
// now I don't need it anymore
}
func clipImage(original: UIImage, toPath path: UIBezierPath) -> UIImage? {
autoreleasepool {
let renderer = UIGraphicsImageRenderer(size: original.size)
return renderer.image { (context) in
let rect = path.bounds
path.apply(CGAffineTransform(translationX: 0, y: -rect.origin.y))
path.apply(CGAffineTransform(scaleX: 1, y: -1))
path.apply(CGAffineTransform(translationX: 0, y: rect.origin.y + rect.height))
path.addClip()
original.draw(in: CGRect(x: 0, y: 0, width: original.size.width, height: original.size.height))
}
}
}
}