cancelPreviousPerformRequestWithTarget не отменяет мой ранее отложенный поток, запущенный с performSelector

Я запустил задержанное использование потока performSelector но у пользователя все еще есть способность поразить кнопку "Назад" в текущее представление, вызывающее dealloc, чтобы быть названным. Когда это происходит, мой поток все еще, кажется, называют, который заставляет мое приложение отказывать, потому что свойства, которые поток пытается записать, чтобы быть выпущенным. Для решения этого, я пытаюсь звонить cancelPreviousPerformRequestsWithTarget для отмены предыдущего запроса, но это, кажется, не работает. Ниже некоторые фрагменты кода.

- (void) viewDidLoad {
    [self performSelector:@selector(myStopUpdatingLocation) withObject:nil afterDelay:6];
}   

- (void)viewWillDisappear:(BOOL)animated {
        [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(myStopUpdatingLocation) object:nil];
    }

Я делаю что-то неправильное здесь? Метод myStopUpdatingLocation определяется в том же классе, что я называю выполнить запросы.

Немного больше фона. Функция, которую я пытаюсь реализовать, состоит в том, чтобы найти пользовательское местоположение, искать Google некоторые местоположения вокруг того местоположения и отобразить несколько аннотаций на карту. На viewDidLoad Я начинаю обновлять местоположение с CLLocationManager. У меня есть сборка в тайм-ауте после 6 секунд, если я не получаю свою желаемую точность в тайм-ауте, и я использую a performSelector сделать это. То, что может произойти, является пользовательскими щелчками, которые все еще выполнит кнопка "Назад" в представлении и этом потоке даже при том, что все мои свойства были выпущены, вызвав катастрофический отказ.

Заранее спасибо!

James

6
задан Dhara 9 January 2013 в 07:06
поделиться

1 ответ

Я обнаружил свою проблему, она не имела ничего общего с моими вызовами performSelector. Я обнаружил, что вам нужно установить delgate MKMapView и CLlocationManager равным нулю перед их выпуском. В противном случае они будут продолжать работать, даже если вы выпустили экземпляры, и они могут привести к сбою вашего приложения.

Спасибо за вашу помощь, Ной !.

4
ответ дан 17 December 2019 в 02:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: