Dies ist wegen der Art und Weise MKMapView
funktioniert. Da ein Vorgang aussteht, behält MapKit den Wert MKMapView
bei und es wurde noch nicht freigegeben. Das ist selbst kein Problem. Das Problem ist, dass es weiterhin Nachrichten an Ihren Delegaten sendet.
Die Problemumgehung ist einfach: Als Teil der Bereinigung Ihres Ansichtscontrollers setzen Sie den Delegaten der Kartenansicht auf nil
, wodurch verhindert wird, dass MKMapView
Nachrichten an sie sendet.
Dies ist in MKMapViewDelegate Protocol Reference dokumentiert:
ein MKMapView Objekt vor der Freigabe für die Sie einen Delegaten festgelegt haben, daran erinnert, dass Objekts der Delegierten-Eigenschaft auf Null zu setzen. Ein Ort, an dem Sie dies tun können, ist in der Dealloc-Methode, wo Sie die Kartenansicht entsorgen.
Edit: Geben Sie Oscar auch ein upvote, gerade unten, wer das Dokumentationsangebot hier zur Verfügung gestellt.
Angesichts ARC, ich schlage vor, bedeutet dies, dass Sie die Delegierten für die Kartenansicht auf nil
in Ihrem View Controller dealloc
setzen sollten.
+1 für das Speichern meiner Zeit. – EmptyStack