2009-08-17 7 views
0

Je pense qu'il me manque quelque chose d'évident quelque part. J'ai une lastqueriedlocation (CLLocation *) définie dans l'en-tête comme une propriété et synthétisée. Je veux mis à jour en LocationManager: didUPdateToLocation: fromLocation:Stocker une CLLocation persistante

 
- (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 est et init'd en ventilés entre viewDidLoad.

Le problème est que bien sûr lastQueriedLocation = newLocation; résulte en un EXC_BAD_ACCESS. Alors, quelle est la bonne approche pour persister lastQueriedLocation? Si cela contribue à rendre le problème plus concret - reSearch appelle un service web récupérant un point d'intérêt à moins de 2 km de l'emplacement - donc je ne veux le faire que lorsque nous avons bougé 1 km ... mais je veux toujours garder la précision au mieux, donc je peux mettre en évidence le plus proche, faire défiler la carte etc.

Répondre

1

Vous définissez simplement l'iVar plutôt que la propriété synthétisée, ce qui signifie que newLocation n'est pas conservé par la propriété.

Remplacer lastQueriedLocation = newLocation; avec:

[self setLastQueriedLocation:newLocation]; 

Ou, si vous préférez utiliser le notation:

self.lastQueriedLocation = newLocation; 
Questions connexes