2016-06-01 2 views
0

В моем приложении я разрабатываю функциональный модуль CoreLocation, и мне нужно знать, были ли вызваны startUpdatingLocation или stopUpdatingLocation. Я знаю, что могу использовать логическую переменную, но мне интересно, есть ли что-то более глобальное.Есть ли способ узнать, активен ли режим locationManager или остановлен?

ответ

1

Нет API для проверки статуса «запуска» для CLLocationManager. Вы можете обернуть CLLocationManager в классе (или подклассе) и иметь «запущенное» состояние в этом настраиваемом классе.

Нечто подобное возможно:

Swift:

class MyLocationManager: CLLocationManager { 
    var running: Bool 

    override init() { 
     running = false 
     super.init() 
    } 

    override func startUpdatingLocation() { 
     super.startUpdatingLocation() 
     running = true 
    } 

    override func stopUpdatingLocation() { 
     super.stopUpdatingLocation() 
     running = false 
    } 

} 

ObjC:

@interface MyLocationManager : CLLocationManager 
@property (nonatomic, assign) BOOL running; 
@end 

@implementation MyLocationManager 
- (void) startUpdatingLocation 
{ 
    [super startUpdatingLocation]; 
    self.running = YES; 
} 

- (void) stopUpdatingLocation 
{ 
    [super stopUpdatingLocation]; 
    self.running = NO; 
} 
@end 

PS: Этот класс не поточно, но вы получите идею