swift - 为什么 DispatchQueue.main.async 在 Swift 应用程序中不起作用?

标签 swift xcode asynchronous

我正在努力处理 Swift 中的异步代码。如果没有互联网连接,我必须禁用 2 个按钮。我在 2 个不同的函数中有 2 个 DispatchQueue.main.async 调用。其中 1 个可以工作,但另一个不会禁用该按钮(好处是您可以单击该按钮,但不会发生任何事情)。我正在 iPhone 上测试我的代码,因为模拟器无法正确运行我正在使用的 SDK。

所有这些函数看起来都是这样的(这是最后一个不起作用的函数):

public func disableButton2(_ check: Bool) {
        DispatchQueue.main.async{
            self.button2.isEnabled = check
}

最佳答案

我用过这个,效果很好

DispatchQueue.main.asyncAfter(deadline: .now() + delayInSeconds) { [weak self] in
  guard let self = self else {
    return
  }

试试这个你就会得到结果。

关于swift - 为什么 DispatchQueue.main.async 在 Swift 应用程序中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58586227/

相关文章:

ios - 快速弹出 anchor

ios - iTunes Connect 内部版本号重置

java - xcode 和 java 代码

macos - 如何在 Swift 中删除一个 View 的所有 subview ?

swift - 如何在 Swift 2.0 中使用 enumerateNodeWithName?

Xcode7 UIAlertController 获取用户数据

objective-c - 计算 XCode 中 URL 处的文件数

asynchronous - 处理 clojure 异步 channel 的超时和缓冲区溢出任务

javascript - 在 Chrome 中执行 fetch() 和 setTimeout() 的优先级

java - 使用 Java AsyncHttpClient 库执行异步连接?