Dlaczego upaść po MKMapView uwalnia się jakbym już go używasz?

głosy
23

Mam MKMapView. Czasami po mój widok kontroler zostaje odrzucona, ja dostać EXC_BAD_ACCESS.

Włączyłem NSSZombiesi wygląda na to MKMapView„s delegata - moim zdaniem kontrolera! - jest nazywany, mimo zarówno MKMapViewi UIViewControllerpodklasa uwolnieniu. I zostały sprawdzone, a mój zarządzanie pamięcią jest prawidłowe.

Co się dzieje?

Utwórz 02/02/2010 o 23:10
źródło użytkownik
W innych językach...                            


4 odpowiedzi

głosy
43

To ze względu na sposób MKMapViewprac. Jest to operacja w toku, więc MapKit się zachowując MKMapViewi nie zostały faktycznie jeszcze przydziałów. Że sama nie jest problemem. Problemem jest to, że nadal nie może wysyłać wiadomości do delegata.

Rozwiązaniem jest prosty: W ramach oczyszczania Państwa zdaniem regulatora ustawić widok mapy jest delegatem nil, które zapewnią, MKMapViewwysyłać wiadomości do niego.

Jest to udokumentowane w MKMapViewDelegate Protocol Reference :

Przed zwolnieniem obiektu MKMapView dla których ustawiono delegata, należy pamiętać, aby ustawić właściwość delegata tego obiektu do zera. Jedno miejsce, można to zrobić w metodzie dealloc gdzie rozporządzania widoku mapy.

Edit: Daj Oscar jest upvote jak również, tuż poniżej, która dostarczyła dokumentacji cytat tutaj.

Biorąc pod uwagę, ARC, proponuję to oznacza, że należy ustawić delegata Twojego widoku mapy, aby nilw kontroler widoku użytkownika dealloc.

Odpowiedział 02/02/2010 o 23:18
źródło użytkownik

głosy
18

OK, jest to potwierdzenie odpowiedź. To z doc firmy Apple, ale to brakuje MKMapView. Można go znaleźć tylko w dokumentacji jego protokołem Delegat:

Przed zwolnieniem obiektu MKMapView dla których ustawiono delegata, należy pamiętać, aby ustawić właściwość delegata tego obiektu do zera. Jedno miejsce, można to zrobić w metodzie dealloc gdzie rozporządzania widoku mapy.

UWAGA: Dotyczy to również UIWebView.

Ustawić MapView za delegata wskaźnik do zera w sposób dealloc delegata, a nasi awarii wydaje się, że zostały wyeliminowane.

Odpowiedział 20/11/2011 o 22:20
źródło użytkownik

głosy
2

Ustawianie delegata widoku mapy, aby nilnie pracować dla mnie. Jednak ustawienie showsUserLocation=NOna delegata pracował upewniając ma aktualizacji lokalizacji są odbierane.

Odpowiedział 02/09/2011 o 17:57
źródło użytkownik

głosy
0

Problem, w moim przypadku, było to, że pierwszy raz uruchomiono aplikację nie naciskać „allow” podczas monitowania o zezwolenie lokalizacji (przypadkowo !!).

Odinstalowanie aplikacji i ponowne zainstalowanie go, gdy pojawi się monit pozwalam zezwoleń, a nie więcej katastrofę!

Odpowiedział 21/05/2015 o 15:11
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more