在返回位置之前如何等待计时器?
Posted
技术标签:
【中文标题】在返回位置之前如何等待计时器?【英文标题】:How do I wait on a timer before returning location? 【发布时间】:2012-02-11 22:37:14 【问题描述】:我正在尝试编写一个返回当前位置的方法。当我等待 30 秒、1 分钟或 2 分钟(在设置中设置)时,我会显示一个警报视图。我允许用户使用 alertView 按钮绕过计时器等待,该按钮接受我将在警报视图中显示和更新的当前准确性。我的代码有几个漏洞,我需要帮助。本质上,它是知道如何让 getCurrentLocation 方法等待计时器。我不能只使用延迟,因为我计划在用户按下按钮或满足位置准确性(在计时器中检查)时强制计时器到期。代码如下:
- (void)timerFireMethod
static int elapsedTime = 0;
elapsedTime++;
if (elapsedTime >= gpsTimeout)
[locationManager stopUpdatingLocation];
elapsedTime = 0; // reset static variable
// !!! How do I do the following !!!
// do something to allow getCurrentLocation to return
if ((currentLocation.horizontalAccuracy <= gpsDesiredAccuracy) & (currentLocation.verticalAccuracy <= 2*gpsDesiredAccuracy))
[locationManager stopUpdatingLocation];
elapsedTime = 0; // reset static variable
// do something to allow getCurrentLocation to return
- (CLLocation *)getCurrentLocation
// check if current accuracy is good enough and return if true
if ((currentLocation.horizontalAccuracy <= gpsDesiredAccuracy) & (currentLocation.verticalAccuracy <= 2*gpsDesiredAccuracy))
[locationManager stopUpdatingLocation];
return currentLocation;
else
// show alert with count down timer
UIAlertView *gpsAlertView = [[UIAlertView alloc] initWithTitle:nil message:@"tbd put in timer and list location accuracy updates" delegate:self cancelButtonTitle:@"Continue With Current Accuracy" otherButtonTitles:nil];
[gpsAlertView show];
// start timer
NSTimer *gpsTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self selector:@selector(timerFireMethod:)
userInfo:nil repeats:YES];
// !!! How do I do the following !!!
// wait for when timer expires,
// the user to press "Continue With Current Accuracy" button (can force timer to expire?)
return currentLocation;
【问题讨论】:
【参考方案1】:等待任何计时器或任何加速度计或用户事件的方法是使用 return 语句简单地将当前方法退出到 UI 运行循环。
等待后你想做的任何事情都可以进入定时器或事件回调方法。
【讨论】:
这似乎是有道理的。我被困在通过与没有 gps 相同的方式将 gps 功能硬塞到我的应用程序中。我会在接下来的一两天内完成这项工作,并报告进展情况。 现已启动并运行。你的建议奏效了。我还在 Apple 的 LocateMe 示例代码中找到了很好的参考。以上是关于在返回位置之前如何等待计时器?的主要内容,如果未能解决你的问题,请参考以下文章