我想在我的库中提供一个返回当前位置的方法。但我无法做到这一点,因为位置将更新并获取CLLocationManager委托方法。所以有任何方法可以返回用户的位置在我的库中调用方法之后。
先谢谢。
答案 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]);
}
}