Swift-实时更新标签

时间:2018-07-13 08:31:43

标签: swift dispatch-queue

我有一组复杂的数学运算,需要花费几秒钟的时间(在速度更快的iPhone上是这样)。为了使用户保持兴趣并相信程序不会小睡,我需要实时更新标签/编号。

从历史上看,我会使用:

    DispatchQueue.main.sync {...

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

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

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

1 个答案:

答案 0 :(得分:1)

您根本不应该调用main.sync。 只需调用DispatchQueue.main.async,Ashley Mills就会说:

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