我有一个带有两个视图控制器的导航控制器,其中一个带有MKMapView
。
出口和代表已设置。
@IBOutlet weak var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
}
委托方法mapView(_:viewFor:)
会返回可以群集的MKMarkerAnnotationView
。
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
let annotationView = MKMarkerAnnotationView(annotation: annotation, reuseIdentifier: "_")
annotationView.clusteringIdentifier = "_"
return annotationView
}
如果以下条件匹配,当从导航控制器弹出视图控制器时,Xcode会引发EXC_BAD_ACCESS。
MKClusterAnnotation
。在上述情况下,点击后退按钮或从左边缘轻扫会触发EXC_BAD_ACCESS。
这可以通过在viewWillDisappear(_:)
中取消选择任何选定的注释来避免,但我不确定这是否是理想的解决方案。
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
for annotation in mapView.selectedAnnotations {
mapView.deselectAnnotation(annotation, animated: true)
}
}
我想知道为什么会引发异常。