Swift - проблема памяти при просмотре изображений - PullRequest
0 голосов
/ 01 ноября 2019

В настоящее время я разрабатываю функцию, чтобы пользователь мог рисовать линии на изображении. Затем чертежи будут преобразованы в строку Base64 для хранения обратно на сервер. Но возникла проблема памяти процесса рисования линий, из-за которой у простого и маленького рисунка может не хватить памяти, и он завершается. Я не знаю, почему это происходит.

let renderer = UIGraphicsImageRenderer(size: drawViewList[i].bounds.size)
let image = renderer.image {  ctx in
               drawViewList[i].drawHierarchy(in: drawViewList[i].bounds, afterScreenUpdates: true)
            }

Отладка всегда указывает на то, что проблемы с памятью возникали в приведенных выше строках. Я проверил с использованием памяти с самого начала, чтобы проблема произошла. Объем памяти был на уровне около 20 МБ, и он внезапно продолжает увеличиваться на сотню МБ и заканчивается, когда достигает предела.

Я попытался закодировать объект строк (библиотека называется SwiftyDraw ) но я не совсем понимаю, как это можно сделать, потому что структура, определенная для нарисованных линий, настроена.

Объект Line из библиотеки:

public struct Line {
    public var path: CGMutablePath
    public var brush: Brush

    init(path: CGMutablePath, brush: Brush) {
        self.path = path
        self.brush = brush
    }
}

Может кто-нибудьпомочь с вопросом? Большое спасибо.

...