В моем приложении я разрабатываю функциональный модуль CoreLocation, и мне нужно знать, были ли вызваны startUpdatingLocation
или stopUpdatingLocation
. Я знаю, что могу использовать логическую переменную, но мне интересно, есть ли что-то более глобальное.Есть ли способ узнать, активен ли режим locationManager или остановлен?
0
A
ответ
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: Этот класс не поточно, но вы получите идею