В настоящее время я разрабатываю функцию, чтобы пользователь мог рисовать линии на изображении. Затем чертежи будут преобразованы в строку 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
}
}
Может кто-нибудьпомочь с вопросом? Большое спасибо.