簡體   English   中英

刪除NotificationCenter的觀察器-“變量在其自身的初始值內使用”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM