我在一个应用程序中有两个CLLocationManage。第一个是监视信标区域,而另一个是监视正常的CLRegion。
上午第一个
// Do any additional setup after loading the view.
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
B.m第二
gpsLocationManager = [[CLLocationManager alloc] init];
gpsLocationManager.delegate = self;
我对后者非常确定,我没有在任何信标区域上调用任何startMonitoringForRegion。但是,似乎B中的gpsLocationmanager一直从A中的那个接收到enterRegion回调。因此最终,我检查了传入的区域para类型,以使gpsLocationManager不响应来自信标区域的任何回调。
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
NSLog(@"%d regions under monitor:", self.gpsLocationManager.monitoredRegions.count);
NSLog(@"%d regions in regionArray:", self.regionArray.count);
NSLog(@"Region type %@:", [region class]);
if(![region isKindOfClass:[CLBeaconRegion class]]){
任何想法?
问候
锤子
最佳答案
CoreLocation
功能在整个应用程序范围内提供。
这就是为什么通用模式是在CLLocationManager
中初始化AppDelegate
并将其设置为CLLocationManagerDelegate
的原因。
如果您需要在多个CLLocationManager
中访问一个UIViewController
,那么我将其设为AppDelegate
的属性。然后,可以将所需的回调转发给UIViewController
,如果它们已经初始化并且可见。
关于ios - 两个CLLocationManager干扰,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26839170/