Не удается устранить утечку, на которую указывает Leaks Tool - PullRequest
2 голосов
/ 16 апреля 2019

У меня есть метод, который я использую для настройки и отображения аннотации на карте:

func setupPlacemark(place: Place, mapView: MKMapView) {

    guard let location = place.location else { return }

    let geocoder = CLGeocoder()
    geocoder.geocodeAddressString(location) { [unowned self] (placemarks, error) in

        if let error = error {
            print(error)
            return
        }

        guard let placemarks = placemarks else { return }

        let placemark = placemarks.first

        let annotation = MKPointAnnotation()
        annotation.title = place.name
        annotation.subtitle = place.type

        guard let placemarkLocation = placemark?.location else { return }

        annotation.coordinate = placemarkLocation.coordinate
        self.placeCoordinate = placemarkLocation.coordinate

        mapView.showAnnotations([annotation], animated: true)
        mapView.selectAnnotation(annotation, animated: true)
    }
}

Когда я запускаю инструмент Утечки, я вижу эту утечку:

image

И здесь вы увидите, какая строка кода не нравится:

image

Что я должен сделать, чтобы утечка исчезла?

1 Ответ

0 голосов
/ 16 апреля 2019

Попробуйте заменить:

mapView.showAnnotations([annotation], animated: true)
mapView.selectAnnotation(annotation, animated: true)

С:

weak var weakMapView = mapView
weakMapView.showAnnotations([annotation], animated: true)
weakMapView.selectAnnotation(annotation, animated: true)

Дайте мне знать, помогло ли это, если да, я добавлю объяснение.

...