崩溃的 MapKit
Crashing MapKit
我目前正在开发一个 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
和类别 MKMarkerAnnotationView
的指针 0x13c0bb800
。不幸的是没有额外的描述。我真的不知道哪段代码现在失败了。当我点击注释图钉时发生崩溃。
也许你们中的任何人都可以向我指出 going/went 哪里错了?
所以过了一段时间,我重写了整段代码,发现我搞砸了 MKMarkerAnnotationView 和颜色的 if 语句。删除了那些,现在它完美地工作了。打算尝试将它与 switch 语句一起使用,但到目前为止它已经完全解决了这个问题。问题特此关闭。
我目前正在开发一个 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
和类别 MKMarkerAnnotationView
的指针 0x13c0bb800
。不幸的是没有额外的描述。我真的不知道哪段代码现在失败了。当我点击注释图钉时发生崩溃。
也许你们中的任何人都可以向我指出 going/went 哪里错了?
所以过了一段时间,我重写了整段代码,发现我搞砸了 MKMarkerAnnotationView 和颜色的 if 语句。删除了那些,现在它完美地工作了。打算尝试将它与 switch 语句一起使用,但到目前为止它已经完全解决了这个问题。问题特此关闭。