ios - 删除通知中心的观察者 - "Variable used within its own initial value"

标签 ios iphone swift notificationcenter

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

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

            // Do stuff
        })

这会出现编译器错误“变量在其自身初始值内使用”。我怎样才能删除这个观察者?

最佳答案

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

您可以将观察者变量声明为隐式解包可选,因为当 block 执行:

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

    NotificationCenter.default.removeObserver(observer)

    // Do stuff
})

关于ios - 删除通知中心的观察者 - "Variable used within its own initial value",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43262369/

相关文章:

ios - 如何快速创建动态 View ?

jQuery $.live() 不适用于 iPhone 上的表格行

iphone - 格式化 NSString(字符替换、UTF、...)

swift - 如何将 ASTextNode 与 TTTAttributedLabel 一起使用

ios - 如何测试快速嵌套函数?

ios - UICollectionViewCell 内容未拉伸(stretch)

ios - 使用 Objective-C 在 iPhone 上禁用 WIFI

iphone - 应用内购买升级如何在设备上更改应用图标或安装新应用?

swift - 按钮作为变量

iphone - 在 iOS 中使用 AVFoundation 暂停和恢复同一文件的视频捕获