CGContext.draw для MKOverlay, вызывающий всплеск использования памяти iOS 11
Одна из страниц моего приложения включает в себя представление карты, на котором поверх карты отображается MKOverlay. Всякий раз, когда это наложение отображается на карте, использование памяти увеличивается с 150 МБ до 2,5 ГБ, а затем сразу же уменьшается до 150 МБ. Используя распределения, я обнаружил, что CGContext.draw в моем классе MapOverlayView использует тонну данных. Кто-нибудь знает, почему? Вот мой код:
class MapOverlayView: MKOverlayRenderer {
var overlayImage: UIImage
init(overlay: MKOverlay, overlayImage:UIImage) {
self.overlayImage = overlayImage
super.init(overlay: overlay)
}
override func draw(_ mapRect: MKMapRect, zoomScale: MKZoomScale, in context: CGContext) {
let mapImage = overlayImage.cgImage
let mRect = MKMapRect(origin: overlay.boundingMapRect.origin, size: MKMapSize(width: overlay.boundingMapRect.size.width - 2000, height: overlay.boundingMapRect.size.height - 4000))
let mapRect = rect(for: mRect)
context.scaleBy(x: 1.0, y: -1.0)
context.translateBy(x: 0.0, y: -mapRect.size.height)
context.rotate(by: CGFloat.pi / -6 - 0.05)
context.draw(mapImage!, in: mapRect) //Memory problem here
}
}
class MapOverlay: NSObject, MKOverlay {
var coordinate: CLLocationCoordinate2D
var boundingMapRect: MKMapRect
init(coord: CLLocationCoordinate2D, rect: MKMapRect) {
self.coordinate = coord
self.boundingMapRect = rect
}
}
Заранее спасибо!
РЕДАКТИРОВАТЬ: я обнаружил, что использование изображений низкого качества предотвратит всплеск Есть ли в любом случае использовать фотографии высокого качества и предотвратить всплеск использования памяти?