私はまだプログラミングにかなり慣れていないので、初心者の質問があります。私のタイプ CLLocationManager の場合、appDelegate.m ファイルにインスタンス変数がある場合、applicationDidFinishLaunching メソッドで CLLocationManager インスタンス変数を割り当てて初期化できると考えました。そして、ボタンを使用して別のメソッドで startUpdatingLocation を呼び出すことができます (別のクラスから呼び出しているため)。これは機能していないようで、startUpdatingLocation と同じメソッドで割り当て/初期化する必要があると考えています。本当?同じメソッドで stopUpdatingLocation する必要がありますか? 私のコードは以下の通りです:
(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];
}
この 2 番目の方法でそれを行うことになっている場合、CLLocationManager オブジェクトのスコープが、それが含まれるメソッドに対してのみであるためですか? インスタンス変数として使用すると、他のメソッドで使用でき、startUpdatingLocation と stopUpdatingLocation に別のメソッドを使用できると考えました。ありがとう。