美文网首页
学习笔记-将代理回调方法的结果以block的方式进行处理

学习笔记-将代理回调方法的结果以block的方式进行处理

作者: 离离乱惑 | 来源:发表于2016-09-21 11:06 被阅读80次

    地理定位:需要实例化一个manger,然后调用startUpdatingLocation进行连续定位,在- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray*)locations的回调方法里面可以获取到locations的数据,再对数据进行处理。

    通过block可以将回调方法里的数据进行回传,这样就能在一个方法里面完成位置获取和对数据的操作,方便代码的阅读。

    首先定义一个block(_locationManager是CLLocationManager实例化的对象)

    typedef void(^FetchLocationCallback)(CLLocation *location, NSError *error);

    FetchLocationCallback _block;

    // 获取本地坐标的方法

    - (void)currentLocation:(FetchLocationCallback)complete {

    _block = complete;

    [_locationManager startUpdatingLocation];

    }

    // 开始定位后的回调函数

    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {

    CLLocation *rLocation = locations[0];

    if (_block) _block(rLocation, nil);

    [_locationManager stopUpdatingLocation];

    }

    这样直接调用currentLocation方法就可以直接对定位数据进行操作,不用满屏幕找定位的回调方法

    // 调用定位的方法

    [self currentLocation:^(CLLocation *location, NSError *error) {

    NSLog(@"%@",location);

    }];

    相关文章

      网友评论

          本文标题:学习笔记-将代理回调方法的结果以block的方式进行处理

          本文链接:https://www.haomeiwen.com/subject/pvcaettx.html