Swift - 实时更新标签

标签 swift dispatch-queue

我有一套复杂的数学题,需要几秒钟(而且是在速度更快的 iPhone 上)。为了让用户保持兴趣并相信程序没有小睡,我需要实时更新标签/数字。

从历史上看,我会使用:

    DispatchQueue.main.sync {...

但是现在运行时会出现线程 1 错误。 所以我正在使用:

    DispatchQueue.global().async(execute: {
        DispatchQueue.main.sync {
            self.dateLabel.text = date1Formatter.string(from: newDate!)
            // etc
        }
     })

令人惊讶的是,这并不是实时更新数字,而是在周期结束时才更新。如何“同步”它?

最佳答案

你根本不应该调用 main.sync。 只需调用 DispatchQueue.main.async Ashley Mills 说:

    DispatchQueue.global().async(execute: {
        DispatchQueue.main.async {
            self.dateLabel.text = date1Formatter.string(from: newDate!)
            // etc
        }
     })

关于Swift - 实时更新标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51320925/

相关文章:

ios - UICollectionView 滚动更改选定的单元格

ios - 为什么从哪里调用 DispatchQueue.main.async 很重要?

ios - 同步/异步的行为是否类似于串行/并发,即它们都控制DispatchQueues还是仅执行同步/异步控制线程

iphone - 使用 RxSwift 返回 DispatchGroup 之后的对象

objective-c - 在同一框架内将私有(private) Objective-C header 导入 Swift

ios - (Int) -> $T4 与 NSMutableArray 不同

swift - 同步和异步如何与线程安全一起工作?

swift - 在继续下一个请求或调度队列中的下一个 DispatchWorkItem 之前,我如何等待接收来自 DispatchWorkItem 的响应

ios - 动态添加的 UIView 的自动布局

ios - Swift 3 中 Firebase 同步性不起作用的解决方法