0

我想在我的库中提供一种返回当前位置的方法。但我无法做到这一点,因为位置会更新并进入 CLLocationManager 委托方法。所以有什么方法可以在调用后返回用户的位置我的库中的方法。

提前致谢。

4

1 回答 1

3

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

ps 你真的应该使用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]);
    }
}
于 2013-10-20T14:22:12.823 回答