2009-08-17 2 views
0

Я думаю, что у меня что-то не хватает. У меня есть (CLLocation *) lastqueriedlocation, определенная в заголовке как свойство и синтезируемая. Я хочу это в обновленном locationManager: didUPdateToLocation: fromLocation:Хранение постоянного CLLocation

 
- (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 является alloced и init'd в viewDidLoad.

Вопрос заключается в том, что, конечно, lastQueriedLocation = newLocation; приводит к EXC_BAD_ACCESS. Итак, каков правильный подход к сохранению lastQueriedLocation?

Если это помогает сделать проблему более конкретной - reSearch вызывает веб-сервис, получающий POI в пределах 2 км от местоположения - так что я хочу только сделать это, когда мы переместим 1 км ... но я все еще хочу сохранить точность в лучшем случае я могу выделить ближайший, прокрутить карту и т. д.

ответ

1

Вы просто устанавливаете iVar, а не синтезированное свойство, что означает, что свойство newLocation не сохраняется.

Заменить lastQueriedLocation = newLocation; с:

[self setLastQueriedLocation:newLocation]; 

Или, если вы предпочитаете использовать точечную нотацию:

self.lastQueriedLocation = newLocation; 
Смежные вопросы