gpt4 book ai didi

ios - 通知观察员不在 swift 闭包中工作

转载 作者:行者123 更新时间:2023-11-28 07:28:45 25 4
gpt4 key购买 nike

NotificationCenter.default.post 在闭包中不起作用

我正在和通知观察者一起上课

     NotificationCenter.default.addObserver(self, selector: #selector(self.methodOfReceivedNotification(notification:)), name: Notification.Name("Start"), object: nil)

NotificationCenter.default.addObserver(self, selector: #selector(self.methodOfReceivedNotification(notification:)), name: Notification.Name("Stop"), object: nil)

NotificationCenter.default.addObserver(self, selector: #selector(self.methodOfReceivedNotification(notification:)), name: Notification.Name("Interrupt"), object: nil)

在同一个类中有一个方法来处理通知

@objc func methodOfReceivedNotification(notification: Notification) {
print("Notification Received")
}

当我尝试使用以下代码从另一个类发布观察者时,它工作正常

    NotificationCenter.default.post(name: Notification.Name("Start"), object: nil)

但是当尝试在网络方法的闭包响应中发布相同的内容时,它并没有调用 methodOfReceivedNotification

关闭代码

       executeHttpReq(url: getUIUrl(), getparametersDict: getParameters, onSuccess: { (response, status,isEod) -> (
Any, String,Bool) in

NotificationCenter.default.post(name: Notification.Name("Start"), object: nil)
return (response,status,isEod)
}, onFailure: { (error) in
//todo send stop event to the caller

NotificationCenter.default.post(name: Notification.Name("Stop"), object: nil)

})

代码有什么不对的地方请指教。

最佳答案

尝试在主队列处于关闭状态时将通知发布到主队列中。

DispatchQueue.main.async {
NotificationCenter.default.post(name: Notification.Name("Start"), object: nil)
}

关于ios - 通知观察员不在 swift 闭包中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55652145/

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