Теперь я работаю с инструментом Leaks в XCode, и в последней строке этого фрагмента кода есть одна утечка:
let geocoder = CLGeocoder()
geocoder.geocodeAddressString(location) { (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 = self.place.name
annotation.subtitle = self.place.type
guard let placemarkLocation = placemark?.location else { return }
annotation.coordinate = placemarkLocation.coordinate
self.mapView.showAnnotations([annotation], animated: true)
self.mapView.selectAnnotation(annotation, animated: true)
}
Чтобы предотвратить эту утечку, я использую список захвата [слабый self] взакрытие:
geocoder.geocodeAddressString(location) { [weak self] (placemarks, error) in
guard let self = self else { return }
Но это не предотвращает утечку моего кода в той же последней строке кода.Но иногда, если я перезапускаю свой проект несколько раз, эта утечка исчезает, даже если я удаляю этот список захвата [слабый я].То, что я делаю неправильно, ребята могут найти логику в этом поведении.Любая помощь приветствуется.