gpt4 book ai didi

ios - 设置间隔时 QueueScheduler 不触发

转载 作者:行者123 更新时间:2023-11-28 15:08:51 25 4
gpt4 key购买 nike

此代码不打印任何内容:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
QueueScheduler.main.schedule(after: Date() + 1.seconds,
interval: .seconds(1)){
print("test Output")}
return true
}

但是如果我在没有 interval: 的情况下执行此操作,它会按预期打印一次。为什么这样?

最佳答案

The variation without interval is using DispatchQueue.main.asyncAfter并在执行操作前检查处置情况。因此,除非您在返回的 Disposable 上显式调用 dispose,否则该操作将运行。

但是the variation with interval is using DispatchSource.makeTimerSource and then capturing the returned DispatchSourceTimer in the resulting AnyDisposable action .由于 DispatchSourceTimer 在释放时会自行取消,因此您必须存储返回的 Disposable 否则它会deinits 并且计时器会被取消。

我不知道这是故意行为还是错误。一方面,这种名称相似的方法在这方面的行为不同,这有点令人困惑。但另一方面,如果您忘记处理它返回的 Disposable,则按间隔重复的更容易泄漏,所以这也许是有道理的。 p>

更新:

这是一个错误,是 fixed in 3.1.0 .

关于ios - 设置间隔时 QueueScheduler 不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47977290/

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