[英]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
})
這會出現編譯器錯誤“變量在其自身的初始值內使用”。 如何刪除該觀察者?
編譯器抱怨是因為它不“知道”閉包僅在創建觀察者並將其分配給變量后才執行。
您可以將觀察者變量聲明為隱式展開的可選變量,因為在執行該塊時可以保證它具有一個值:
var observer: NSObjectProtocol!
observer = NotificationCenter.default.addObserver(forName: ..., object: ..., queue: ...,
using: { notification in
NotificationCenter.default.removeObserver(observer)
// Do stuff
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.