我对编程还是很陌生,所以我有一个菜鸟问题。当您在我的 appDelegate.m 文件中有一个实例变量时,在我的 CLLocationManager 类型的情况下,我想我可以在 applicationDidFinishLaunching 方法中分配和初始化我的 CLLocationManager 实例变量。然后我可以使用一个按钮以不同的方法启动UpdatingLocation(因为我是从另一个类调用它)。这似乎不起作用,我认为我需要在与 startUpdatingLocation 相同的方法中分配/初始化。真的吗?我是否需要以相同的方法停止更新位置?我的代码如下:
(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 提供单独的方法。谢谢。