我有点困惑委托是如何工作的。我相信这个想法是让另一个班级为你做这项工作并给你回电话。所以如果你做了这样的事情:
- (void)viewDidLoad {
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
if (CLLocationManager.locationServicesEnabled == YES) {
NSLog(@"location enabled");
latitudeLabel.text = [NSString stringWithFormat:@""];
[locationManager startUpdatingLocation];
}
NSLog(@"%g", locationCoordinate.latitude);
}
如果我 NSLog viewDidLoad 中的坐标,即使我 startUpdatingLocation,我的 locationCoordinate 属性的值也是 0。但是如果我 NSLog 委托方法中的值,如下所示:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSString *latitudeString = [[NSString alloc] initWithFormat: @"%g m", newLocation.coordinate.latitude];
latitudeLabel.text = latitudeString;
[latitudeString release];
locationCoordinate = newLocation.coordinate;
NSLog(@"in delegate: %g", locationCoordinate.latitude);
}
我得到一个实际的位置值。我认为通过使用委托方法,我的 locationProperty 会被设置,但似乎没有。我是否错误地理解了委派?谢谢。