Остановить iOS 7 MKMapView от утечки памятиios


Answers

Быстрая версия:

override func viewWillDisappear(animated:Bool){
    super.viewWillDisappear(animated)
    self.applyMapViewMemoryFix()
}

func applyMapViewMemoryFix(){
    switch (self.mapView.mapType) {
        case MKMapType.Hybrid:
            self.mapView.mapType = MKMapType.Standard
            break;
        case MKMapType.Standard:
            self.mapView.mapType = MKMapType.Hybrid
            break;
        default:
            break;
    }
    self.mapView.showsUserLocation = false
    self.mapView.delegate = nil
    self.mapView.removeFromSuperview()
    self.mapView = nil
}
Question

Я заметил, что мое приложение теряет память, но если я возьму MKMapView , проблема с памятью исчезнет.

Чтобы проверить теорию, я сделал простой проект, который имеет представление, которое подталкивает представление с помощью MKMapView в нем и выскакивает и толкает. Больше ничего. Никакого кода в контроллерах просмотра, все, что сделано через раскадровку.

Если я перехожу назад и вперед к виду карты, он начинается примерно с 3 МБ после того, как вы нажимаете и выталкиваете представление с картой в нем, примерно в 15 раз память составляет около 230 МБ.

Кто-нибудь еще видел это? Кажется, это довольно большая ошибка. Есть ли другой способ использования MKMapView , который предотвратит его утечку?