MapKit / plassering leder krasjer app ved lossing utsikt

stemmer
7

Jeg har en bug der søknaden min krasjet EXC_BAD_ACCESS når jeg treffer tilbake-tasten på navigasjonslinjen og utsikten losset som hadde en MapKit (mapView) og brukt Location Manager. Prøvde i dagevis for å rette opp en feil og til slutt kom opp med en løsning for alle som kommer over dette problemet:

Legg til denne koden i dealloc

- (void)dealloc {
    mapView.delegate = nil;
    locationManager.delegate = nil;

    [mapView release];
    [locationManager release];
}
Publisert på 25/03/2010 klokken 04:08
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Jeg hadde dette også, :) Og, ja, dette er fix faktisk en skikkelig løsning;

- (void)dealloc {
  mapView.delegate = nil;
  locationManager.delegate = nil;

  [mapView release];
  [locationManager release];
}

Hva skjer bak kulissene er dette:

  1. Du treffer backkey. Dette avlaster og følgelig frigjør styreenheten som holder mapView. Som det har vært ganske sannsynlig bare en eneste referanse til kontrolleren vil det bli dealloc'ed da.

  2. Den locationManager, men er ganske sannsynlig fortsatt refereres et sted i den interne driften av geopositioning.

  3. Hvis locationManager og / eller mapView nå sende ut en melding til sine respektive delegere, de følger en ugyldig peker. Som vil resultere i en EXC_BAD_ACCESS unntak.

Ja: nilling delegater som peker til seg selv er alltid en god idé. Jeg adjusting ønsket Apple vil legge til noen auto der.

Svarte 18/02/2012 kl. 14:04
kilden bruker

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