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];
}
startUpdatingLocation
和 stopUpdatingLocation
是实例方法,这就是我使用它们的方式,而 [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];
}
我正在自定义 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];
}
startUpdatingLocation
和 stopUpdatingLocation
是实例方法,这就是我使用它们的方式,而 [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];
}