使用ARC调用和释放CLLocationManager

时间:2014-07-21 08:46:05

标签: ios cllocationmanager

我的应用只能获取用户当前位置一次。

使用位置管理器和委托成功完成。一旦我第一次获得该位置,我的代表就会将经理调到stopUpdatingLocation

由于我正在使用ARC,并且在我的应用程序运行的所有时间内都保留了此类的实例,因此我的CLLocationManager实例将保留在内存中。

我知道GPS服务非常耗电,但它实际上不消耗更多事件会产生相同的效果吗?它继续工作吗?

我想知道我是否应该添加一些逻辑来释放它。

1 个答案:

答案 0 :(得分:0)

试试以下...

-(void)updateLoc
{
    if (self.locationManager != nil)
    {
        [self.locationManager stopUpdatingLocation];
        self.locationManager.delegate = nil;
        self.locationManager = nil;
    }

    self.locationManager = [[CLLocationManager alloc] init];    
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    self.locationManager.delegate = self;
    self.locationManager.headingFilter = 1;

    self.locationManager.distanceFilter=10.0;
    [self.locationManager startUpdatingLocation];

}


-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    [self.locationManager stopUpdatingLocation];
    self.locationManager = nil;
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{//Use if you are supporting iOS 5
    [self.locationManager stopUpdatingLocation];
    self.locationManager = nil;
}