我不明白如何使用块删除观察者的通知。
var block = NotificationCenter.default.addObserver(forName: .notifName, object: obj, queue: OperationQueue.current, using: { notification in
NotificationCenter.default.removeObserver(block)
// Do stuff
})
这表示编译器错误"变量在其自己的初始值"中使用。我怎样才能删除这个观察者?
答案 0 :(得分:4)
编译器抱怨因为它不“知道”关闭 在创建并分配了观察者之后,仅执行 到变量。
您可以将observer变量声明为隐式展开的可选,因为它保证在块时具有值 执行:
var observer: NSObjectProtocol!
observer = NotificationCenter.default.addObserver(forName: ..., object: ..., queue: ...,
using: { notification in
NotificationCenter.default.removeObserver(observer)
// Do stuff
})