iOS - 在单例中自定义 class 方法

iOS - customize class method in a singleton

我正在自定义 CLLocationManager 的单身人士 class。

我有

@property (nonatomic, strong) CLLocationManager *sManager;

static MyLocationManager* sMyLocationManager=nil;

+(instancetype)sharedLocationManager{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sMyLocationManager = [[self alloc] init];

    });
    return sMyLocationManager;

}

我可以将自己的方法写成

-(void)settingUserLocationManager{
    if(nil== sMyLocationManager.sManager){
        sMyLocationManager.sManager = [[CLLocationManager alloc] init];
}
-(void)onStartUpdatingUserLocation{
    [sMyLocationManager.sManager startUpdatingLocation];
    return;
}
-(void)onStopUpdatingUserLocation{
    [sMyLocationManager.sManager stopUpdatingLocation];
}

startUpdatingLocationstopUpdatingLocation 是实例方法,这就是我使用它们的方式,而 [CLLocationManager locationServicesEnabled] 是一个 class 方法。我不知道如何在我的单身人士中使用它 class。

我曾尝试将其用作

+(BOOL)locationServicesEnabled {
    return [sMyLocationManager.sManager locationServicesEnabled];
}

但未按预期工作。请补充一些想法。

使用

+(BOOL)locationServicesEnabled {
    return [[sMyLocationManager sharedLocationManager] locationServicesEnabled];
}

由于您使用 class 包装 CLLocationManager,因此 class 方法遵循相同的技术。

您的 class 将包含一个方法,例如

+ (BOOL)locationServicesEnabled
{
  return [CLLocationManager locationServicesEnabled];
}