我有一个处理通知的类。我可以将观察者添加到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