【问题标题】:BOOL method is returning true when used by NSLog when it should be returning false当 NSLog 使用 BOOL 方法应该返回 false 时,它​​返回 true
【发布时间】:2014-01-11 22:19:19
【问题描述】:

这是一个定位应用。当我第一次在 iPhone 上运行该应用程序时,会出现一个警告窗口,询问我是否要允许定位服务。选择“确定”或“不允许”后,我可以点击一个设置为显示我当前位置的按钮。该按钮还设置为使用名为“locationServicesEnabled”的 BOOL 函数的值将 NSLog 打印到控制台,如果是则返回 yes/1,如果不是则返回 no/0。

我的问题是,当我选择不允许选项并按下按钮时,NSLog 仍然将值 1 打印到控制台,这是不正确的。它应该为 0 或 false。连接到我的按钮的文本标签甚至显示“您的位置为空”,但由于某种原因,NSLog 始终显示 BOOL 值 1。

这是我的 ViewController.m 代码:

#import "ViewController.h" 
#import <CoreLocation/CoreLocation.h> 

@interface ViewController () <CLLocationManagerDelegate>

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;

@end

@implementation ViewController

- (void)viewDidLoad
{

[super viewDidLoad];

self.gpsLM = [[CLLocationManager alloc]init];

[self.gpsLM startUpdatingLocation]; 

}

- (void)didReceiveMemoryWarning

{
[super didReceiveMemoryWarning];
}


-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{


}

-(IBAction)gpsButton{

CLLocation * currentLocation = self.gpsLM.location;

self.gpsLabel.text = [NSString stringWithFormat:@"Your Location is %@", currentLocation];

NSLog(@"Location services enabled: %hhd",[CLLocationManager locationServicesEnabled]);

}

@end

【问题讨论】:

    标签: ios objective-c boolean cllocationmanager nslog


    【解决方案1】:

    您需要检查[CLLocationManager authorizationStatus],而不是locationServicesEnabled。授权状态返回一个特定于应用程序的值,以下之一:

    typedef enum {
       kCLAuthorizationStatusNotDetermined = 0,
       kCLAuthorizationStatusRestricted,
       kCLAuthorizationStatusDenied,
       kCLAuthorizationStatusAuthorized
    } CLAuthorizationStatus;
    

    希望这些名称是不言自明的。

    【讨论】:

    • 谢谢!这样就成功了,它显示了正确的值。
    【解决方案2】:

    我刚刚找到了我自己问题的答案。如果 iPhone 的定位服务选项被完全禁用,布尔函数只会返回一个 false 值。如果您只禁用了 1 个单个应用,但启用了主要功能并且其他应用正在使用它,那么它仍然会返回值 1。看起来 locationServicesEnabled 方法是特定于设备而不是特定于应用的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-07
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多