gpt4 book ai didi

swift - 为什么我的计时器不想在指定的时间间隔触发?

转载 作者:行者123 更新时间:2023-11-28 10:57:17 26 4
gpt4 key购买 nike

我的课上有这两个函数:

func setTimer () {
alertEndTimer = Timer.init(timeInterval: 10, target: self, selector: #selector(hideAlert), userInfo: nil, repeats: false);
print ("NOW: \(now)")
print ("FIRE DATE: \(alertEndTimer!.fireDate)");
}

@IBAction func hideAlert () {
doSomething();
}

控制台的结果是这样的:

NOW: 2017-03-01 03:32:36 +0000
FIRE DATE: 2017-03-01 03:32:46 +0000

然后我在 doSomething(); 上设置了一个断点。但是等了 1 分钟之后,断点根本就没有被调用。我还检查了计时器 isValid() 是否返回 true。那么为什么我的函数没有被调用?

最佳答案

From the documentation :

Use the init(timeInterval:invocation:repeats:) or init(timeInterval:target:selector:userInfo:repeats:) class method to create the timer object without scheduling it on a run loop. (After creating it, you must add the timer to a run loop manually by calling the add(_:forMode:) method of the corresponding RunLoop object.)

那就是你需要调用

RunLoop.current.add(alertEndTimer, forMode: .defaultRunLoopMode)

为了启动定时器。


您可以使用 scheduledTimer method 创建计时器自动启动它。

alertEndTimer = Timer.scheduledTimer(timeInterval: 10, 
target: self,
selector: #selector(hideAlert),
userInfo: nil,
repeats: false)

关于swift - 为什么我的计时器不想在指定的时间间隔触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42522723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com