我想在我的库中提供一种返回当前位置的方法。但我无法做到这一点,因为位置会更新并进入 CLLocationManager 委托方法。所以有什么方法可以在调用后返回用户的位置我的库中的方法。
提前致谢。
我想在我的库中提供一种返回当前位置的方法。但我无法做到这一点,因为位置会更新并进入 CLLocationManager 委托方法。所以有什么方法可以在调用后返回用户的位置我的库中的方法。
提前致谢。
您可以向您的库方法添加一个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]);
}
}