В настоящее время я работаю над приложением MapKit, которое помещает пользовательские аннотации (местоположения) в MapKit MapView.Тем не менее, что-то не так с размещением контактов.Пины на самом деле отображаются на карте и тому подобное, но приложение продолжало падать.Поэтому я запустил на нем зомби, и это дало мне эту ошибку: An Objective-C message was sent to a deallocated 'MKMarkerAnnotationView' object (zombie) at address: 0x1030ef600
, которая затем указала мне на следующее: specialised ViewController.mapView(_:viewfor:)
Я считаю, что фрагмент кода, ответственный за это, таков:
extension ViewController {
//Setting color of marker and enabling callouts
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) - > MKAnnotationView ? {
let annotationView = MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: "pin")
annotationView.canShowCallout = true
annotationView.calloutOffset = CGPoint(x: -5, y: 5)
//Add button for user to see more info about location
annotationView.rightCalloutAccessoryView = UIButton(type: .detailDisclosure)
//Change marker color based on location
if annotation is MKUserLocation {
return nil
} else {
if annotation.subtitle! == "Excellent location" {
annotationView.markerTintColor = UIColor.green
} else {
if annotation.subtitle! == "Good location" {
annotationView.markerTintColor = UIColor.orange
} else {
if annotation.subtitle! == "Average location" {
annotationView.markerTintColor = UIColor.yellow
} else {
if annotation.subtitle! == "Neutral location" {
annotationView.markerTintColor = UIColor.red
} else {
annotationView.markerTintColor = UIColor.black
}
}
}
}
}
return annotationView
}
}
К сожалению, я не смог извлечь ни точную проблему с этим блоком, ни описание зомби.Кажется, это постоянная проблема с MKMarkerAnnotationView
.
// После предложенного редактирования предыдущая проблема, кажется, (после обширных тестовых прогонов) остается без изменений.Однако теперь происходит сбой по другой причине, а именно: An Objective-C message was sent to a deallocated 'MKMarkerAnnotationView' object (zombie) at address: 0x13c0bb800.
**** Ответственный абонент 0x104c9c903
и указатель 0x13c0bb800
категории MKMarkerAnnotationView
.Нет дополнительного описания, к сожалению.Я действительно понятия не имею, какой кусок кода сейчас терпит неудачу.Сбой происходит, когда я нажимаю на пин-код аннотации.
Возможно, кто-нибудь из вас мог бы указать мне, что происходит / пошло не так?