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

地理定位:需要实例化一个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的方式进行处理)