Frage

Ich glaube, ich etwas offensichtlich irgendwo fehle. Ich habe eine (CLLocation *) lastqueriedlocation als Eigenschaft im Header definiert und synthetisiert. Ich möchte aktualisiert es in Locationmanager: didUPdateToLocation: fromLocation:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{

    CLLocationDistance dist = [lastQueriedLocation getDistanceFrom:newLocation];
    if (dist>1000) {
        lastQueriedLocation = newLocation;
        [self reSearch:lastQueriedLocation];
    }

    if ([resultArray count] > 0) {
        [self findAndDisplayNearestLocation:location];
    }   
}

lastQueriedLocation ist alloced und init'd in viewDidLoad.

Das Problem ist, dass natürlich lastQueriedLocation = newLocation; führt zu einem EXC_BAD_ACCESS. Also, was ist der richtige Ansatz, um die lastQueriedLocation zu persistierenden?

Wenn es hilft, das Problem zu konkretisieren - Forschung ist ein Web-Service-Aufruf innerhalb 2 km von der Position POI holen - so möchte ich es nur tun, wenn wir 1 km bewegt haben ... aber ich will noch die Genauigkeit halten an am besten, damit ich das nächste Highlight, blättern die Karte usw.

War es hilfreich?

Lösung

Sie richten gerade die iVar anstatt die synthetisierte Eigenschaft, was bedeutet, newLocation nicht durch die Eigenschaft beibehalten lassen.

Ersetzen lastQueriedLocation = newLocation; mit:

[self setLastQueriedLocation:newLocation];

Oder, wenn Sie lieber verwenden Punktnotation:

self.lastQueriedLocation = newLocation;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top