.m ファイルに次のコードがあります。
コードは、次のタスクを実行することです。
- CLLocationManager クラスを初期化する
- プロパティの取得 (速度、精度、座標)
- これらの値を NSString に変換します
- NSLog を使用してこれらの値を画面に記録します
- 指定されたラベルに値を設定し、最後に
- メソッド「locationUpdate」に含まれるコードをループします。
コードは、これらすべてのプロパティの初期値を提供します。ただし、値はすべてのプロパティで同じです (つまり、2.7188880)。
さらに、メソッド「locationUpdate」をループすると、コードは各プロパティに対して 0 を返します。
コードがプロパティの値を返さない理由を誰か教えてもらえますか?
- (void)viewDidLoad {
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locationManager startUpdatingLocation];
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval: 2.0
target: self
selector:@selector(locationUpdate)
userInfo: nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
NSString *spd = [[NSString alloc] initWithFormat:@"%f", speed];
NSString *crd = [[NSString alloc] initWithFormat:@"%f", coordinates];
NSString *drc = [[NSString alloc] initWithFormat:@"%f", direction];
NSString *acc = [[NSString alloc] initWithFormat:@"%f", accuracy];
NSString *desc = [locationManager description];
NSLog(@"Speed: %@", spd);
NSLog(@"Coordinates: %@", crd);
NSLog(@"Direction: %@", drc);
NSLog(@"Accuracy: %@", acc);
NSLog(@"Description: %@", desc);
Speedometer.text = spd;
CoordinatesLabel.text = crd;
DirectionLabel.text = drc;
AccuracyLabel.text = acc;
DescriptionLabel.text = desc;
}
- (void)locationUpdate {
NSString *desc = [locationManager description];
NSString *spd = [NSString stringWithFormat:@"%g", speed];
NSString *crd = [NSString stringWithFormat:@"%g", coordinates];
NSString *drc = [NSString stringWithFormat:@"%g", direction];
NSString *acc = [NSString stringWithFormat:@"%g", accuracy];
NSLog(@"Speed: %@", spd);
NSLog(@"Coordinates: %@", crd);
NSLog(@"Direction: %@", drc);
NSLog(@"Accuracy: %@", acc);
Speedometer.text = spd;
CoordinatesLabel.text = crd;
DirectionLabel.text = drc;
AccuracyLabel.text = acc;
DescriptionLabel.text = desc;
}