Oli*_*lie 20 iphone cllocationmanager
我没有在sim或设备上获得任何位置回调.我已经调用了这个代码:
- (void)startLocationCallbacks: (NSObject*) ignore
{
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
locationManager.distanceFilter = MINIMUM_METERS;
[locationManager startUpdatingLocation];
NSLog(@"[DEBUG] [locationManager startUpdatingLocation] (%@, %@)", locationManager, locationManager.delegate);
}
Run Code Online (Sandbox Code Playgroud)
并在两者的顶部记录日志
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
Run Code Online (Sandbox Code Playgroud)
和
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
Run Code Online (Sandbox Code Playgroud)
但是这两个日志语句都没有被调用.为我的应用启用了位置通知(如设置中所示,加上我说"允许".)
我没有获得位置更新的可能原因是什么?
配置/其他信息:
谢谢!
Oli*_*lie 48
呼!好的,我找到了.
事实证明,使一个CLLocationManager非关闭位置回调的方法之一是在非主线程中进行所有设置.当我将我的设置例程移动到a时performSelectorOnMainThread,所有操作都完全符合预期.
什么样的恶梦!
希望这个答案能帮助别人......
编辑/澄清:
最初,我有这样的事情:
- (BOOL) appDidFinishLaunchingWithOptions: (NSDictionary*) options
{
// ...[app setup, snip]
[NSThread detachNewThreadSelector: @selector(postLaunchSetupThread) toTarget: self withObject: nil];
}
- (void)postLaunchSetupThread
{
NSAutoreleasePool *pool = [NSAutoreleasePool new];
// ...[other setup, snip]
[self setupLocationManager];
[pool release];
}
- (void)setupLocationManager
{
self.myLocationManager = [[[CLLocationManager alloc] init] autorelease];
[myLocationManager startLocationUpdates];
}
Run Code Online (Sandbox Code Playgroud)
但是调用setupLocationManager一个线程阻止了回调.所以我的修复是移动线
[self setupLocationManager];
Run Code Online (Sandbox Code Playgroud)
走出线程并重新进入 appDidFinishLaunchingWithOptions
tte*_*kin 15
实际上你也可以从另一个线程运行它.来自Apple文档:
位置管理器对象的配置必须始终在具有活动运行循环的线程上进行,例如应用程序的主线程.
只需确保您的运行循环在该线程上运行,并调度CLLocationManager事件.有关运行循环的更多信息:https: //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html
| 归档时间: |
|
| 查看次数: |
16439 次 |
| 最近记录: |