Я все еще довольно новичок в программировании, поэтому у меня возник вопрос о нубе. Когда у меня есть переменная экземпляра, в моем случае типа CLLocationManager, в моем файле appDelegate.m, я подумал, что могу выделить и инициализировать переменную экземпляра CLLocationManager в методе applicationDidFinishLaunching. И тогда я мог бы использовать кнопку для запускаUpdatingLocation в другом методе (так как я вызываю его из другого класса). Это, похоже, не работает, и я думаю, что мне нужно было выделить / инициализировать в том же методе, который я запускаю UpdatingLocation. Это правда? Нужно ли остановитьUpdatingLocation в том же методе? Мой код ниже:
(locationManager is declared as a property)
- (void)stopUpdating {
[locationManager stopUpdatingLocation];
}
- (double)distanceTraveled {
return distanceTraveled;
}
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after application launch
[window addSubview:rootController.view];
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[window makeKeyAndVisible];
}
- (void)startUpdating {
[locationManager startUpdatingLocation];
}
Похоже, я должен делать это больше похоже на:
- (void)startUpdating {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
}
Если я должен сделать это вторым способом, это потому, что область действия объекта CLLocationManager предназначена только для метода, в котором он находится? Я думал, что имея его в качестве переменной экземпляра, я смогу использовать его в других методах, и у меня может быть отдельный метод для startUpdatingLocation и stopUpdatingLocation. Спасибо.