作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的项目中有这段代码:
func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(
self,
selector: #selector(self.didUpdateHistory),
name: NSNotification.Name.init("didUpdateHistory"),
object: nil)
}
func didUpdateHistory() {
// Update some UI elements
}
现在我的问题是:如果我从项目中的某个类发布通知并且触发不是由 UI 元素引起的,我是否仍需要将代码包装在 didUpdateHistory 函数中使用 DispatchQueue.main.async { ... }
还是我应该包装 post 调用本身?
此外,在何处添加观察者以及从何处发布通知是否重要?
最佳答案
您只需包装 post 调用即可。
DispatchQueue.main.async {
NotificationCenter.default.post(name: "didUpdateHistory", object: nil, userInfo: nil)
}
阅读有关向特定线程传递通知的更多信息 https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Notifications/Articles/Threading.html
关于swift3 - NotificationCenter 发布以更新主线程上的 UI 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42648496/
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试使用 USB 小工具驱动程序使嵌入式设备作为 MTP 设备工作。 我知道 Android 从大容量存储设备切换到 MTP 设备已经有一段时间了,并且找到了 source code for M
我是一名优秀的程序员,十分优秀!