IOS 定位 单例
+ (SCLocationController *)sharedController { static SCLocationController *sharedController = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedController = [[self alloc]init]; }); return sharedController; } - (id)init { self = [super init]; if (self) { _locationManager = [[CLLocationManager alloc]init]; _locationManager.delegate = self; _locationManager.desiredAccuracy = kCLLocationAccuracyBest; _locationManager.distanceFilter = 30; // Meters. } return self; } #pragma mark - Location Manager #pragma mark - CLLocationManagerDelegate - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { [_locManager stopUpdatingLocation]; CLGeocoder *reverseGeocoder=[[CLGeocoder alloc] init]; [reverseGeocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *array, NSError *error) { CLPlacemark *placeMark = [array lastObject]; if (placeMark != nil) { state = [placeMark.addressDictionary objectForKey:@"State"]; city = [placeMark.addressDictionary objectForKey:@"City"]; subLocality = [placeMark.addressDictionary objectForKey:@"SubLocality"]; if (city.length > 0) { NSLog(@"%@-%@-%@",state,city,subLocality); } else{ NSLog(@"%@-%@",state,subLocality); } } }]; }