如何快速从用户输入中运行警报
Posted
技术标签:
【中文标题】如何快速从用户输入中运行警报【英文标题】:How do I run an alarm from user input in swift 【发布时间】:2015-07-20 12:26:38 【问题描述】:到目前为止,我已经创建了一个循环,它接受用户输入并将其与当前时间进行比较,如果匹配则发出警报。当我运行它时,它以 99% 的 CPU 使用率运行,使我的计算机几乎无法使用。我正在寻找一种方法以更低的优先级或更好的优先级运行它,以替代循环。我看到的所有其他答案要么没有解决用户通过文本输入的问题,要么没有迅速解决。非常感谢任何帮助,下面是比较两次的函数,alarmHour 和 alarmMinute 变量是用户输入的变量。
func runTimer()
var rightTime:Bool
do
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: date)
let hour = String(components.hour)
let minutes = String(components.minute)
if (hour == globe.alarmHour && minutes == globe.alarmMinutes)
rightTime = true
else
rightTime = false
while (rightTime == false)
if (rightTime == true)
prepareAudio()
AlarmSound.play()
【问题讨论】:
【参考方案1】:呃。由于您概述的原因,您的 do/while 循环实际上是一种非常糟糕的方法。
在大多数情况下,一个 NSTimer 是要走的路。看看 'scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:` 方法。
您创建一个计时器并安排它,它会在所需时间调用您的选择器。
NSTimers 并不完全准确。它们可以关闭大约 50 毫秒,但用于向用户显示警报就可以了。
【讨论】:
以上是关于如何快速从用户输入中运行警报的主要内容,如果未能解决你的问题,请参考以下文章
当用户输入的时间低于预期时间时,如何在 swiftUI 中显示警报消息?
警报代码有问题,需要用户输入和后台计时器。定时器工作,但不停止程序