【问题标题】:Location Manager Stops Updating Randomly位置管理器随机停止更新
【发布时间】:2013-04-24 00:13:13
【问题描述】:

我正在编写一个使用 CoreLocation 的应用,但由于某种原因,位置管理器会随机停止更新位置。

我确保所有对 startUpdating 方法的调用都在主线程上(不确定它是否重要)。

我记录了所有的委托方法,包括didAuthorizationStatusChangedidPauseUpdatingLocationdidFailWithError,发现没有一个被调用。

似乎在 4 次更新后停止;为什么会这样?

更新:从applicationDidFinish 调用startUpdating 有效,但稍后在代码中调用该方法再次停止工作

-(CLLocationManager*) locationManager
{
if(locationManager == nil)
{
        locationManager = [[CLLocationManager alloc] init];
        locationManager.delegate = self;
        locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        locationManager.distanceFilter = kCLDistanceFilterNone;
}

return locationManager;
}


[self.locationManager startMonitoringForRegion:self.venueRegion];

【问题讨论】:

    标签: ios objective-c core-location cllocationmanager locationmanager


    【解决方案1】:

    几件事。

    您已经编写了一个自定义的单例 getter,除了它不是静态的(应该是在 getter 前面的 + 号),这似乎是错误的。获取位置管理器应如下所示:

    CLLocationManager *myManager = [MyLocationManager sharedManager];

    接下来,如果那是一个“Getter”方法,它应该是:

    -(CLLocationManager*)getLocationManager;

    否则,当您点击 self.locationManager 时,您不会通过您的 getter 并触发您试图在此处点击的必要的 getter 操作。

    【讨论】:

    • 这不是问题,objc 中的属性获取访问器 setVarName 和 varName。我确实同意单例螨虫是错误的,但似乎分配单个实例没问题
    猜你喜欢
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多