iOS — делегат приложения — вызов didBecomeActive с помощью CLLocationManager

У меня типичная проблема. В моем приложении я обрабатываю метод делегата приложения

- (void)applicationDidBecomeActive:(UIApplication *)application

чтобы обновить пользовательский интерфейс.

Поскольку мое приложение не будет завершено и запущено в фоновом режиме, всякий раз, когда приложение переходит в активное состояние, этот метод вызывается и работает нормально.
Но в одном из моих контроллеров представления я m создание объекта CLLocationManager

self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self; // send loc updates to myself

Проблема в том, что при создании этого объекта диспетчера местоположения также вызывается делегат приложения «applicationDidBecomeActive», что мне не нужно обрабатывать. Как мне игнорировать вызов, когда инициализируется объект диспетчера местоположения?


person Satyam    schedule 16.04.2012    source источник


Ответы (1)


Странно, что такой вызов происходит, но если нет возможности его остановить, просто сделайте флаг в настройках по умолчанию, что-то вроде callAfterSettingDelegate, а в DidBcomeActive проверьте, вызывался ли он после этого, игнорируйте этот вызов и установите этот флаг на ноль.

person Nikita Pestrov    schedule 24.04.2012
comment
Обработка флагов для всего — неправильный путь. Если вы продолжите добавлять флаги, код будет заполнен флагами и ничем более. - person Satyam; 25.04.2012