gpt4 book ai didi

ios - 删除 NotificationCenter 的观察者 - "Variable used within its own initial value"

转载 作者:可可西里 更新时间:2023-11-01 00:35:46 33 4
gpt4 key购买 nike

我不明白如何使用 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 - 删除 NotificationCenter 的观察者 - "Variable used within its own initial value",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43262369/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com