有没有办法获取当前位置而不使用我的应用程序中的CLLocationManager委托

时间:2013-10-20 14:12:48

标签: iphone ios ipad geolocation cllocationmanager

我想在我的库中提供一个返回当前位置的方法。但我无法做到这一点,因为位置将更新并获取CLLocationManager委托方法。所以有任何方法可以返回用户的位置在我的库中调用方法之后。

先谢谢。

1 个答案:

答案 0 :(得分:3)

您可以向库方法添加block参数,该参数在收到位置更新时将被调用。然后可以将该块保存在属性中(如果多个对象可以同时等待,则保存到数组中)。

P.S。你真的应该使用CLLocationManager。任何其他确定位置的方法都不太准确/只是(如果不是更多)耗时。


您可以定义一个块(取决于您想要传递的位置数):

typedef void(^LocationUpdateBlock)(CLLocation *location);

然后为感兴趣的类添加一个公共接口来注册(简单版本):

property (copy, nonatomic) LocationUpdateBlock locationUpdateBlock;

然后在你的委托方法中:

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