Сбой MapKit - PullRequest
       31

Сбой MapKit

0 голосов
/ 28 ноября 2018

В настоящее время я работаю над приложением 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 голосов
/ 29 ноября 2018

Итак, через некоторое время я просто переписал весь кусок кода и обнаружил, что облажался с MKMarkerAnnotationView и операторами if для цветов.Убрал те и теперь работает отлично.Попробую использовать его с оператором switch, но пока он полностью решил проблему.Настоящий вопрос закрыт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...