如何等待位置管理器获取高精度数据

use*_*026 5 cllocationmanager ios

我有这段代码等待一段时间来获得高精度数据:

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{

  if((newLocation.horizontalAccuracy < 150 && newLocation.horizontalAccuracy > 0 /* valid */ && abs(howRecent) < 15.0 /*If it's a relatively recent event less than 15 seconds */))


}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序的其他部分的问题我需要等待这个方法回来,所以我使用:

[NSThread sleepForTimeInterval:5]; // wait 5 seconds
Run Code Online (Sandbox Code Playgroud)

这是一个好习惯,还是有更好的方法等待另一个任务执行.

All*_*ian 6

Apple已经提供了一个示例项目来演示这种确切的场景.该项目已被调用LocateMe,可在此处找到.

你可以找到相关的方法GetLocationViewController.m.

简而言之,它背后的逻辑是丢弃任何缓存的值并累积位置读数,直到horizontalAccuracy满足desiredAccuracy要求.我希望这会让你走上正轨.