基于 Block 的地理位置经纬度获取方法封装

在 iOS 开发中,获取设备的经纬度信息是一项常见的需求。为了提高代码的可复用性和可维护性,我们可以使用 Block 对定位和经纬度获取方法进行封装。

封装思路:

  1. 创建一个独立的类,用于处理定位相关的逻辑。
  2. 在该类中,定义一个使用 Block 作为参数的公共方法。
  3. 在 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 方便地传递结果,提高了代码的可读性和可维护性。

zip
RMMapLocation.zip 预估大小:3个文件
folder
RMMapLocation 文件夹
file
RMMapLocation.m 2KB
file
RMMapLocation.h 365B
file
.DS_Store 6KB
zip 文件大小:3.03KB