swift - Swift - 实时更新标签
问题描述
我有一套复杂的数学运算需要几秒钟(这是在速度更快的 iPhone 上)。为了让用户感兴趣并相信程序没有小睡,我需要实时更新标签/数字。
从历史上看,我会使用:
DispatchQueue.main.sync {...
但这在现在运行时会产生 Thread 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
}
})
推荐阅读
- python - 如何在 django 中的页面上呈现 DateField
- cucumber - Cucumber 在多个站点上运行测试
- java - 使用 java FileWriter 时我尝试解决并发问题是否正确?
- python - Foluim - 在等值线覆盖上绘制圆圈
- python - 使用 Pandas 根据数据框中的另一列值获取特定值的计数和总数
- pandas - 如果列包含字符串,熊猫会删除行
- javascript - 手机和 safari 桌面中的幻灯片动画问题
- ios - 将 HTML 文档转换为文本?迅速
- c - C分配问题:将十进制数转换为位的函数
- javascript - 为什么 getElementById 找不到我的 ReactJs 按钮