在做一个系统定位功能时,需要先请求用户的GPS授权,代码如下
// 创建CLLocationManager对象并设置代理
CLLocationManager *locationM = [[CLLocationManager alloc] init];
locationM.delegate = self;
// 每隔多少米定位一次
// locationM.distanceFilter = 100;
// 设置定位精确度
locationM.desiredAccuracy = kCLLocationAccuracyKilometer;
// 请求前台定位授权, 并在Info.Plist文件中配置Key ( Nslocationwheninuseusagedescription )
[locationM requestWhenInUseAuthorization];
但是这段代码有个问题,弹出的授权GPS提示框在弹出一秒钟后,又自己消失了,用户没法在如此短时间内进行确认。
找不到原因,猜测这个弹出框的生命周期是否跟 locationM这个局部变量一样,在代码执行完之后就释放掉。
然后把locationM换成属性来使用,问题果然解决了,感觉这又是一个坑。
代码如下:
// 创建CLLocationManager对象并设置代理
self.locationM = [[CLLocationManager alloc] init];
self.locationM.delegate = self;
// 每隔多少米定位一次
// self.locationM.distanceFilter = 100;
// 设置定位精确度
self.locationM.desiredAccuracy = kCLLocationAccuracyKilometer;
// 请求前台定位授权, 并在Info.Plist文件中配置Key ( Nslocationwheninuseusagedescription )
[self.locationM requestWhenInUseAuthorization];