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
    }
}

Заранее спасибо!

РЕДАКТИРОВАТЬ: я обнаружил, что использование изображений низкого качества предотвратит всплеск Есть ли в любом случае использовать фотографии высокого качества и предотвратить всплеск использования памяти?

0 ответов

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