删除NotificationCenter的观察者 - "在其自己的初始值内使用的变量"

时间:2017-04-06 17:48:20

标签: ios iphone swift notificationcenter

我不明白如何使用块删除观察者的通知。

var block = NotificationCenter.default.addObserver(forName: .notifName, object: obj, queue: OperationQueue.current, using: { notification in
            NotificationCenter.default.removeObserver(block)

            // Do stuff
        })

这表示编译器错误"变量在其自己的初始值"中使用。我怎样才能删除这个观察者?

1 个答案:

答案 0 :(得分:4)

编译器抱怨因为它不“知道”关闭 在创建并分配了观察者之后,仅执行 到变量。

您可以将observer变量声明为隐式展开的可选,因为它保证在块时具有值 执行:

var observer: NSObjectProtocol!
observer = NotificationCenter.default.addObserver(forName: ..., object: ..., queue: ...,
                                                  using: { notification in

    NotificationCenter.default.removeObserver(observer)

    // Do stuff
})