基于 Block 的地理位置经纬度获取方法封装
在 iOS 开发中,获取设备的经纬度信息是一项常见的需求。为了提高代码的可复用性和可维护性,我们可以使用 Block 对定位和经纬度获取方法进行封装。
封装思路:
- 创建一个独立的类,用于处理定位相关的逻辑。
- 在该类中,定义一个使用 Block 作为参数的公共方法。
- 在 Block 中,返回获取到的经纬度信息,或者错误信息。
代码示例:
typedef void(^LocationCompletionHandler)(CLLocationCoordinate2D coordinate, NSError *error);
@interface LocationManager : NSObject
+ (void)getLocationWithCompletion:(LocationCompletionHandler)completion;
@end
@implementation LocationManager
+ (void)getLocationWithCompletion:(LocationCompletionHandler)completion {
// 定位逻辑
// ...
if (success) {
CLLocationCoordinate2D coordinate = ...;
completion(coordinate, nil);
} else {
NSError *error = ...;
completion(kCLLocationCoordinate2DInvalid, error);
}
}
@end
使用示例:
[LocationManager getLocationWithCompletion:^(CLLocationCoordinate2D coordinate, NSError *error) {
if (!error) {
// 处理获取到的经纬度信息
NSLog(@"纬度:%f, 经度:%f", coordinate.latitude, coordinate.longitude);
} else {
// 处理错误信息
NSLog(@"获取定位失败:%@", error);
}
}];
通过上述方法,我们可以将定位和经纬度获取逻辑封装在一个独立的类中,并使用 Block 方便地传递结果,提高了代码的可读性和可维护性。
RMMapLocation.zip
预估大小:3个文件
RMMapLocation
文件夹
RMMapLocation.m
2KB
RMMapLocation.h
365B
.DS_Store
6KB
3.03KB
文件大小:
评论区