首页 > 解决方案 > Swift - 实时更新标签

问题描述

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

从历史上看,我会使用:

    DispatchQueue.main.sync {...

但这在现在运行时会产生 Thread 1 错误。所以我正在使用:

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

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

标签: swiftdispatch-queue

解决方案


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

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

推荐阅读