【发布时间】:2013-12-27 02:06:38
【问题描述】:
这是我的代码(实现类声明了 CLCoreLocationManagerDelegate 协议):
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
NSLog(@"locations %@", locations);
}
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
NSLog(@"auth status: %u", status);
}
- (void)noteLocation {
if ([CLLocationManager locationServicesEnabled] == NO)
{
NSLog(@"rejected");
return;
};
CLLocationManager* manager = [CLLocationManager new];
manager.delegate = self;
manager.pausesLocationUpdatesAutomatically = NO;
manager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
[manager startUpdatingLocation];
}
运行noteLocation 方法,我的应用会短暂打开“thisApp”希望使用您的当前位置提示。但它立即关闭。无论哪种方式,我都无法回答。并且委托方法永远不会触发。
我只是想走到这一步。但也存在一个更大的架构问题。我的应用程序对其编目的项目具有 note current location 功能,因此用户可以将他的当前位置标记为该项目的位置。除非他们选择该选项,否则我不需要(或不想)浪费电池运行 GPS。但是当他们这样做时,我想要尽可能精确的值。我的想法是以最大精度运行它,等待几次更新(也许确保值稳定),然后记录最终值。有没有更好的方法来做到这一点?
更新
提示正在消失,因为我需要将 LocationManager 实例存储在不会被垃圾收集的地方。
【问题讨论】:
标签: ios ios7 core-location cllocationmanager