我已经阅读了很多示例代码,我知道通常您希望更新用户界面的代码在主线程上执行。如果我遗漏了什么,xcode 会在运行时提示。只是有时。
那么更新用户界面的代码实际上是如何定义的? 是否显示更新 UI 的警报?在 UITableView 上调用 reloadData()?简单地设置 UILabel 的文本怎么样? 特别是对于这三个,我一直在我的应用程序中以两种方式看到和使用它,但无法真正找出规则。特别是因为 xcode 让我摆脱了两者......有时。
编辑:哦,我知道我的困惑从何而来。我认为你在哪个线程上是随机的。但是你实际上“总是”在主线程上,除非你做一些像在后台线程上运行的任务。
所以 Main Thread Checker 实际上并没有让我“逃脱”使用 reload() 和错误地更改我的 viewController 中的标签。只是保证我在主线程上。
我以为我必须突然将每个标签更改包装在 dispatch.async 中。
最佳答案
Xcode 让您做某事并不意味着您应该做那件事。
重新加载表格 View 、显示警报和更改标签文本都是 UI 更新。它们都会改变您在屏幕上看到的内容,因此它们是 UI 更新。始终在主线程上执行这些操作。
非 UI 更改的内容:发送 HTTP 请求、处理数字、从某些数据库加载数据。它们不会改变您在屏幕上看到的内容。
关于ios - ios UI更新代码如何定义用于主调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53295400/