我的 appDelegate 中有一个方法,它获取纬度和经度并返回一个我可以在任何 viewController 中使用的字符串。
应用代理:
-(void)StartUpdating
{
locManager = [[CLLocationManager alloc] init];
locManager.delegate = self;
locManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
locManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m
[locManager startUpdatingLocation];
}
#pragma mark
#pragma mark locationManager delegate methods
- (void)locationManager: (CLLocationManager *)manager
didUpdateToLocation: (CLLocation *)newLocation
fromLocation: (CLLocation *)oldLocation
{
float latitude = newLocation.coordinate.latitude;
strLatitude = [NSString stringWithFormat:@"%f",latitude];
float longitude = newLocation.coordinate.longitude;
strLongitude = [NSString stringWithFormat:@"%f", longitude];
//[self returnLatLongString:strLatitude:strLongitude];
}
-(NSString*)returnLatLongString
{
NSString *str = @"lat=";
str = [str stringByAppendingString:strLatitude];
str = [str stringByAppendingString:@"&long="];
str = [str stringByAppendingString:strLongitude];
return str;
}
我在应用程序开始时调用StartUpdating。现在在我的 viewController 我调用这个方法:
AppDelegate *appDelegate=[AppDelegate sharedAppDelegate];
NSString *str = [appDelegate returnLatLongString];
但是我撞车了
str = [str stringByAppendingString:strLatitude];
在returnLatLongString
.
我知道我正在崩溃,因为当时strLatitude没有价值。但是我该如何解决这个问题?我怎样才能获得更新的纬度和经度值?
另外,我不想在 viewControllers 中使用locationManager。为了让我可以在所有视图控制器中获取当前位置,我在 appDelegate 中完成了它。