我正在更新App Store上拥有的阻力赛车应用程序。以前,用户会点击“开始”按钮,然后开始倒数计时,计时器到0后,应用将跟踪赛车所需的各种事物。例如,用户达到60 MPH,1/8英里和1/4英里所需的时间。但是,我添加了一个设置,该设置允许用户单击开始按钮,然后在需要时启动。当应用感测到运动时,它开始跟踪运动,就像它明智地使计时器在先前版本中命中0一样。但是,我困惑于“等待”直到应用感知到运动之后再使用信息的最佳方法。我尝试了以下方法:
if(zeroTosixtyStyle == true){
Warninglabel.text = ("Launch when you are ready!")
repeat {
sleep(UInt32(0.01))
}while(locationmanager.location?.speed ?? 0 < 2 );
processTwo()
}else{
timer = Timer.scheduledTimer(timeInterval: 0.01,target: self,selector:
#selector(ZerotoSixtyViewController.DecupdateCounter),userInfo: nil,repeats: true)
DecupdateCounter()
}
但是,这显然不是一个好的解决方案。广告它可以提高CPU使用率,并使应用程序的某些部分无响应。实际上,使用该方法会使“警告标签”在循环开始之前尚未真正更新为字符串。等到应用感知到运动后才能移至“ processTwo()”的更有效方法是什么?
有关更多信息,“ zeroTosixtyStyle”是由用户设置设置的布尔值。如果为true,则应用程序等待用户启动;如果为false,则运行倒计时。这可以正常工作。