Jer*_*myP 10
登录管理器在主线程以外的线程上运行闭包,您不能在主线程上使用用户界面元素.
其他人已经说过只读边线上的UI属性就可以了,它们可能是正确的,但它没有绝对的保证,而且,就个人而言,我会注意这些警告.例如,访问这些属性可能会产生副作用.也许他们的值被缓存在某个地方,并且主要线程正在更新或删除属性的过程中,只是当您想要访问它时.
使警告静音的正确方法是在主线程上执行你的cloasure,例如
LoginManager.checkLoginStatus {
isLoggedIn in
DispatchQueue.main.async {
// Do all your UI stuff here
}
}
Run Code Online (Sandbox Code Playgroud)
这样,运行闭包的线程除了调度代码在主队列中运行总是在主线程上运行之外什么都不做.
简单地添加 DispatchQueue.main.async 将阻止这种情况,并且在 swift 文档中推荐。
DispatchQueue.main.async {
//code that caused error goes here
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8429 次 |
| 最近记录: |