【问题标题】:diddeterminestate not always calleddiddeterminestate 并不总是被调用
【发布时间】:2014-08-23 23:50:59
【问题描述】:

有没有其他人遇到过 diddeterminestate 不总是被调用的问题?有时我打电话时

[self.locationManager requestStateForRegion:region]; 

然后什么也没有发生。奇怪的是,当我在

中插入断点时
-(void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region

它开始工作并被调用!这对我来说似乎很不稳定。

【问题讨论】:

    标签: ios core-location


    【解决方案1】:

    我在监控区域后立即请求区域状态时经常遇到此问题。

    例如

    [self.locationManager startMonitoringForRegion:region];
    [self.locationManager requestStateForRegion:region];
    

    我确保在调用 startMonitoringForRegion 后不久通过调度 requestStateForRegion: 调用了 didDetermineStateForRegion。现在这不是一个很好的解决方案,应该小心使用它,但它似乎为我解决了这个烦人的问题。代码如下

    [self.locationManager startMonitoringForRegion:region];
    [self.locationManager performSelector:@selector(requestStateForRegion:) withObject:region afterDelay:1];
    

    【讨论】:

    • 啊啊。似乎每个人都在这里与同样的风车作斗争......遇到了同样的问题,这个解决方法 - 一个丑陋的,承认 - 修复它。
    【解决方案2】:

    也许将 requestStateForRegion 调用放在委托方法 didStartMonitoringForRegion 中会更好。很可能 requestStateForRegion 是在监控(异步)实际开始之前运行的。

    - (void) locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region {
        NSLog(@"Started Monitoring for Region:\n%@",region.description);
        [self.locationManager requestStateForRegion:region];
    }
    

    【讨论】:

    • 每当我调用 self.locationManager?.startMonitoring(for: currRegion) 时 didStartMonitoringForRegion 调用 2X。
    猜你喜欢
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多