有没有办法知道观察者是否收到/没有收到来自 NSNotificationCenter 的通知?
Is there a way to know if an observer did / did not get a notification from NSNotificationCenter?
ViewController.m
已在 [NSNotificationCenter defaultCenter]
中注册为观察员并且正在运行。但是 ViewController
在 viewDidLoad
方法中执行 X。
如果ViewController
没有收到通知,我希望仅发生X。
架构听起来确实很糟糕,但我的问题是 defaultCenter
中是否有一些数据告诉我们观察者是否收到通知?
没有 call-back 方法让我们知道发送的 notification
if 是否被观察者接收到。
根据Notification Center
方法我们可以得到Xcode:
/**************** Notification Center ****************/
open class NotificationCenter : NSObject {
open class var `default`: NotificationCenter { get }
open func addObserver(_ observer: Any, selector aSelector: Selector, name aName: NSNotification.Name?, object anObject: Any?)
open func post(_ notification: Notification)
open func post(name aName: NSNotification.Name, object anObject: Any?)
open func post(name aName: NSNotification.Name, object anObject: Any?, userInfo aUserInfo: [AnyHashable : Any]? = nil)
open func removeObserver(_ observer: Any)
open func removeObserver(_ observer: Any, name aName: NSNotification.Name?, object anObject: Any?)
@available(iOS 4.0, *)
open func addObserver(forName name: NSNotification.Name?, object obj: Any?, queue: OperationQueue?, using block: @escaping (Notification) -> Swift.Void) -> NSObjectProtocol
}
而我们可以参考NotificationCenter
的apple docs,我们应该了解它的功能是:
Objects register with a notification center to receive notifications (NSNotification objects) using the addObserver(_:selector:name:object:) or addObserver(forName:object:queue:using:) methods.
并且从文档中找不到任何提及您的要求。
如果您正在寻找回调,请考虑 Combine,它更像是一种交易通信协议。
ViewController.m
已在 [NSNotificationCenter defaultCenter]
中注册为观察员并且正在运行。但是 ViewController
在 viewDidLoad
方法中执行 X。
如果ViewController
没有收到通知,我希望仅发生X。
架构听起来确实很糟糕,但我的问题是 defaultCenter
中是否有一些数据告诉我们观察者是否收到通知?
没有 call-back 方法让我们知道发送的 notification
if 是否被观察者接收到。
根据Notification Center
方法我们可以得到Xcode:
/**************** Notification Center ****************/
open class NotificationCenter : NSObject {
open class var `default`: NotificationCenter { get }
open func addObserver(_ observer: Any, selector aSelector: Selector, name aName: NSNotification.Name?, object anObject: Any?)
open func post(_ notification: Notification)
open func post(name aName: NSNotification.Name, object anObject: Any?)
open func post(name aName: NSNotification.Name, object anObject: Any?, userInfo aUserInfo: [AnyHashable : Any]? = nil)
open func removeObserver(_ observer: Any)
open func removeObserver(_ observer: Any, name aName: NSNotification.Name?, object anObject: Any?)
@available(iOS 4.0, *)
open func addObserver(forName name: NSNotification.Name?, object obj: Any?, queue: OperationQueue?, using block: @escaping (Notification) -> Swift.Void) -> NSObjectProtocol
}
而我们可以参考NotificationCenter
的apple docs,我们应该了解它的功能是:
Objects register with a notification center to receive notifications (NSNotification objects) using the addObserver(_:selector:name:object:) or addObserver(forName:object:queue:using:) methods.
并且从文档中找不到任何提及您的要求。
如果您正在寻找回调,请考虑 Combine,它更像是一种交易通信协议。