删除 NotificationCenter 的观察者 - "Variable used within its own initial value"
Remove observer for NotificationCenter - "Variable used within its own initial value"
我不明白如何使用块删除通知的观察者。
var block = NotificationCenter.default.addObserver(forName: .notifName, object: obj, queue: OperationQueue.current, using: { notification in
NotificationCenter.default.removeObserver(block)
// Do stuff
})
这会出现编译器错误 "Variable used within its own initial value"。我怎样才能删除这个观察者?
编译器抱怨,因为它没有 "know" 闭包
仅在 观察者创建并分配后执行
到变量。
您可以将观察者变量声明为隐式展开的可选,因为它保证在块时有值
被执行:
var observer: NSObjectProtocol!
observer = NotificationCenter.default.addObserver(forName: ..., object: ..., queue: ...,
using: { notification in
NotificationCenter.default.removeObserver(observer)
// Do stuff
})
我不明白如何使用块删除通知的观察者。
var block = NotificationCenter.default.addObserver(forName: .notifName, object: obj, queue: OperationQueue.current, using: { notification in
NotificationCenter.default.removeObserver(block)
// Do stuff
})
这会出现编译器错误 "Variable used within its own initial value"。我怎样才能删除这个观察者?
编译器抱怨,因为它没有 "know" 闭包 仅在 观察者创建并分配后执行 到变量。
您可以将观察者变量声明为隐式展开的可选,因为它保证在块时有值 被执行:
var observer: NSObjectProtocol!
observer = NotificationCenter.default.addObserver(forName: ..., object: ..., queue: ...,
using: { notification in
NotificationCenter.default.removeObserver(observer)
// Do stuff
})