使用CLLocationManager的正确方法(启动/停止更新用户位置)

我在UIViewController中有一个带有MKMapViewUIView ,它只在用户点击按钮时出现。

过程如下:

  • CLLocationManager对象在header文件中声明为私有成员。
  • 提出了一个带有MKMapViewUIView (最初帧是在边界之外。移动到用户动作的视图边界内,在相同的viewController )。
  • 它被初始化:

     locationManager = [[CLLocationManager alloc] init]; locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move locationManager.desiredAccuracy = kCLLocationAccuracyBest; // 100 m [locationManager startUpdatingLocation]; CLLocation *location = [locationManager location]; CLLocationCoordinate2D coordinate = [location coordinate]; MKCoordinateSpan span = MKCoordinateSpanMake(0.04, 0.04); MKCoordinateRegion region = MKCoordinateRegionMake(coordinate, span); mapView.showsUserLocation = YES; [mapView setRegion:region animated:YES]; 
  • 使用Foursquare API获取附近的位置

现在,我希望在从可见边界移除view时停止位置锁定。 我用stopUdatingUserLocation尝试了它。 我还releasedlocationManager ,但GPS锁图标在statusBar是持久的。 据我所知,连续GPS锁定会耗尽电池,我想阻止它。 我该怎么办呢?

即使它没有正式记录,最好在整个应用程序中只使用一个CLLocationManager。 将其视为单身,不要每次都初始化它,它应该正常工作。