Освободить память после завершения задания 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))
        }
    }
}

}

0 ответов

Другие вопросы по тегам