我目前正在使用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
。不幸的是,没有其他描述。我真的不知道现在哪段代码失败了。当我点击注释图钉时会发生崩溃。
也许你们中的任何人都可以向我指出出了什么问题/错了?
答案 0 :(得分:0)
因此,过了一段时间,我重新编写了整段代码,发现我搞砸了MKMarkerAnnotationView和颜色的if语句。删除了那些,现在可以正常使用了。尝试将其与switch语句一起使用,但到目前为止,它已完全解决了该问题。问题到此结束。