Я работаю над приложением для iPhone, которое требует обновления местоположения с интервалами, указанными пользователем.Вот пример кода, который я использую для этого:
@implementation TestLocation
- (void)viewDidLoad{
if ([Utils getDataWithKey:TIMER_INTERVAL] == nil) {
[Utils saveDataWithKey:TIMER_INTERVAL withValue:@"60.0"];
}
locationManager = [[[CLLocationManager alloc] init] autorelease];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = kCLDistanceFilterNone;
[locationManager startUpdatingLocation];
}
- (void)startLocationManager:(NSTimer *)timer{
[locationManager startUpdatingLocation];
[timer invalidate];
timer = nil;
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
// Here is code to handle location updates...
[manager stopUpdatingLocation];
// Timer will start getting updated location.
NSTimeInterval timeInterval = [[Utils getDataWithKey:TIMER_INTERVAL] doubleValue];
[NSTimer scheduledTimerWithTimeInterval:timeInterval
target:self
selector:@selector(startLocationManager:)
userInfo:nil
repeats:NO];
}
// other implementations ...
@end
Код работает как шарм.
Вопрос:
Я использую CLLocationManager
вместе с NSTimer
, влияет ли это память или батарея потребление?Я имею в виду какое-либо негативное влияние на пользовательский опыт?
Если да, то любые предложения, помогающие ссылкам выполнить эту задачу с оптимизацией, будут высоко оценены.
Примечание: Utils
- мой класс для хранения или извлечения данных.