我有一个方法在我的appDelegate获取经纬度并返回一个字符串,我可以在任何viewController中使用。从AppDelegate获取当前位置
的AppDelegate:
-(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];
但我在returnLatLongString
得到一个崩溃的
str = [str stringByAppendingString:strLatitude];
。
我知道我正在崩溃,因为当时strlatitude没有任何价值。但我该如何解决这个问题?我怎样才能更新纬度和经度的值?我不想在viewControllers中使用locationManager。为了能够在所有viewController中获取当前位置,我在appDelegate中完成了它。
在'AppDelegate中*的appDelegate = [AppDelegate中sharedAppDelegate]'我觉得作者做了正确的事情:从sharedApplication返回委托像'回报(AppDelegate中*)[[UIApplication的sharedApplication]委托];'。 – 2015-04-21 07:25:49