gpt4 book ai didi

ios - dispatch_once 转换 Swift 3

转载 作者:搜寻专家 更新时间:2023-11-01 06:18:11 24 4
gpt4 key购买 nike

下面是我的原代码:

var checkUnauthorizedToken: dispatch_once_t = 0

override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)

dispatch_once(&checkUnauthorizedToken) {
if self.unauthorized {
self.performSelector(#selector(self.displayUnauthorizedMessage), withObject: nil, afterDelay: 0.5)
}
}
}

因为 dispatch_once 已被删除,我更正我可以在没有它的情况下安全地调用选择器?例如:

override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
if self.unauthorized {
self.performSelector(#selector(self.displayUnauthorizedMessage), withObject: nil, afterDelay: 0.5)
}
}

这是正确的吗?

最佳答案

嗯,这不是一回事。我不确定您的确切意图是什么,但我认为您的做法有些矫枉过正。

dispatch_once 是为了确保代码只执行一次,即使多个线程正在调用一个函数,它通常用于初始化经常调用的函数中的变量,并且可能来自不同的函数线程。

由于 viewDidAppear 将始终在主线程中调用,而您只想在首次访问 View 时显示未经授权的 View ,我建议您做一个简单的实例 bool 变量 unauthorizedMessageShown,在第一次访问时将其设置为 true 并在函数中检查。

关于ios - dispatch_once 转换 Swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39725463/

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