Pregunta

Creo que me estoy perdiendo algo obvio en alguna parte. Tengo un (CLLocation *) lastqueriedlocation define en la cabecera como una propiedad y sintetizada. Quiero actualizada en 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 se alloced y init'd en viewDidLoad.

El problema es que, por supuesto, los resultados lastQueriedLocation = newLocation; en un EXC_BAD_ACCESS. Entonces, ¿cuál es el enfoque correcto a la persistencia de la lastQueriedLocation?

Si se ayuda a hacer el problema más concreto - La investigación está llamando a un servicio web ir a buscar puntos de interés dentro de 2 km de la ubicación - por lo que sólo quieren hacerlo cuando nos hemos movido 1 kilometro ... pero todavía quieren mantener la precisión en mejor así que se puede destacar la más cercana, desplazarse por el mapa, etc.

¿Fue útil?

Solución

Usted está sencillamente en ajustar el Ivar en lugar de la propiedad sintetizado, lo que significa newLocation no quede retenida por la propiedad.

Reemplazar lastQueriedLocation = newLocation; con:

[self setLastQueriedLocation:newLocation];

O, si se prefiere utilizar la notación punto-:

self.lastQueriedLocation = newLocation;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top