我创建了一个计时器来触发函数timerFire
,每5秒接受另一个swift文件中的DoublehowHungry
。
计时器获取howHungry
的值,并在每次计时器触发并返回新值时将其减少1。
返回howHungry
的新值后,如何将howHungry
的新值检索到文件1.swift?
由于原始值没有减少,每次都发送相同的值
控制台当前显示:
Hunger value is 14.0
Hunger value is 14.0
Hunger value is 14.0
文件1.swift
let hungerTimer = myTimer()
hungerTimer.startTimer(timerInitialValue: howHungry)
文件2.swift
func startTimer(timerInitialValue:Double){
if timer == nil{ //Create a new timer for hunger if one doesn't exist
timer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(timerFire(sender:)), userInfo: timerInitialValue/*how hungry*/, repeats: true)
print("New Timer Started")
}else{ //If a timer does exist, end it and start a new one.
timer!.invalidate()
timer = nil
print("Old Timer Stopped")
timer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(timerFire(sender:)), userInfo: timerInitialValue, repeats: true)
print ("Now New Timer Started")
print(timer)
}
}
@objc func timerFire(sender: Timer) -> Double{
//get hungryDouble value from Timer
var hungryDouble = sender.userInfo as! Double
//Reduce it by 1
hungryDouble -= 1.0
print("Hunger value is (hungryDouble)")
return(hungryDouble)
}
您可以在file2.swift
中添加回调
var callback:((Double)->())?
@objc func timerFire(sender: Timer){
//get hungryDouble value from Timer
var hungryDouble = sender.userInfo as! Double
//Reduce it by 1
hungryDouble -= 1.0
print("Hunger value is (hungryDouble)")
callback?(hungryDouble)
}
和file1.swift
内部
let hungerTimer = myTimer()
hungerTimer.startTimer(timerInitialValue: howHungry)
hungerTimer.callback = { [weak self] res in
print(res)
}