Проблема с запуском MKReverseGeocoder в фоновом режиме, iphone - PullRequest
0 голосов
/ 14 сентября 2011

Я использую MKReverseGeocoder (reversegeocoder) для получения текущего местоположения пользователя. Я вызываю reversegeocoder в методе locationDidUpdatedToLocation диспетчера CLLocation.

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

if(!reverseGeocoder )
    {
        NSLog(@"geocoder is nill");
        reverseGeocoder=[[MKReverseGeocoder alloc] initWithCoordinate:[newLocation coordinate]];
        reverseGeocoder.delegate=self;
        [reverseGeocoder start];
        NSLog(@"geocoder allocated");
    }

    else
    {
        NSLog(@"geocoder is not nill");


        if(reverseGeocoder.querying)
        {
        //do nothing ;
        }
        else
        [reverseGeocoder release];

    }

}

.querying свойство используется, чтобы гарантировать, что обратный геокодер должен быть освобожден, только когда он завершил свой запрос. Но когда происходит сбой приложения в течение 3-4 секунд после запуска с сообщением об ошибке

-[MKReverseGeocoder isQuerying]: message sent to deallocated instance

Что мне здесь не хватает?

Спасибо за любую помощь заранее.

1 Ответ

1 голос
/ 14 сентября 2011

Может быть потому, что вы не установили делегат геокодера на ноль перед его выпуском?Или, что вы не обнулили указатель?

Попробуйте:

    if(reverseGeocoder.querying)
    {
            //do nothing ;
    }
    else
    {
            [reverseGeocoder setDelegate:nil];
            [reverseGeocoder release];
            reverseGeocoder = nil;
    }
...