崩溃的MapKit

时间:2018-11-28 12:30:36

标签: swift mapkit nszombie mapkitannotation

我目前正在使用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。不幸的是,没有其他描述。我真的不知道现在哪段代码失败了。当我点击注释图钉时会发生崩溃。

也许你们中的任何人都可以向我指出出了什么问题/错了?

1 个答案:

答案 0 :(得分:0)

因此,过了一段时间,我重新编写了整段代码,发现我搞砸了MKMarkerAnnotationView和颜色的if语句。删除了那些,现在可以正常使用了。尝试将其与switch语句一起使用,但到目前为止,它已完全解决了该问题。问题到此结束。