观察员类别未收到通知

时间:2019-02-13 20:02:02

标签: ios swift notificationcenter

我有一个处理通知的类。我可以将观察者添加到NotificationCenter,但是handles方法从不执行。如果我将相同的方法移至添加观察者的类中,则效果很好。

我尝试将其放在类中,并且可以正常工作,只是不能从其他对象获取。这是在Swift 4.2上。我还通过以下方式打印了所有观察者:print("Exp - NC - \(NotificationCenter.default.debugDescription)") ,可以看到为.purchase名称添加了观察者。

//作品

SomeClass.swift

// Works assuming notify handler is in this class
NotificationCenter.default.addObserver(self, selector: #selector(notify(_:)), name: .purchase, object: nil)

//不起作用

MyObserver.swift

import Foundation

@objc
public class MyObserver: NSObject {

    @objc
    public override init() {
        print("Observer here creating a new instance")
    }

    @objc public func onNotification(_ notification: Notification) {
        print("Observer 1 here notifying event")
    }
}

SomeClass.swift

let myObserver = MyObserver()  

NotificationCenter.default.addObserver(myObserver, selector: 
#selector(myObserver.onNotification(_:)), name: .purchase, object: 
nil)

注意:.purchase是Notification.Name的扩展

我希望它也可以通过myObserver类进行通知。似乎仅适用于self。唯一的区别是观察者是自定义对象,而不是self

0 个答案:

没有答案