MapKit / Location Manager crasht app bij het lossen view

stemmen
7

I heeft een bug waar mijn applicatie crashte EXC_BAD_ACCESS toen ik de Back-toets op mijn navigatiebalk en het uitzicht gelost dat een MapKit (mapView) gehad en gebruikten de Location Manager raken. Dagenlang probeerde de bug te herstellen en uiteindelijk kwam met een oplossing voor iedereen die over dit probleem komt:

Voeg deze code toe aan uw dealloc

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

    [mapView release];
    [locationManager release];
}
De vraag is gesteld op 25/03/2010 om 05:08
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

Ik had dit ook :) En ja, deze correctie is eigenlijk een goede oplossing;

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

  [mapView release];
  [locationManager release];
}

Wat gebeurt er achter de schermen is dit:

  1. Je slaat de backkey. Dit lost en bijgevolg geeft de besturingseenheid die de Mapview bezit. Aangezien er zeer waarschijnlijk is slechts een verwijzing naar de regelaar dan worden dealloc'ed.

  2. De locationManager, is echter zeer waarschijnlijk nog ergens waarnaar wordt verwezen in de interne werking van geopositioning.

  3. Als de locationManager en / of mapView nu stuurt een melding naar hun respectievelijke afgevaardigde, ze volgen een ongeldige pointer. Wat zal resulteren in een EXC_BAD_ACCESS uitzondering.

Ja: nilling afgevaardigden die naar zichzelf is altijd een goed idee. Ik justed wilde Apple zou een aantal automagic er toe te voegen.

antwoordde op 18/02/2012 om 15:04
bron van user

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