Есть ли способ узнать, получил ли / не получил ли наблюдатель уведомление от NSNotificationCenter?

ViewController.m зарегистрирован в качестве наблюдателя [NSNotificationCenter defaultCenter]и работает. Но ViewControllerделает X внутри viewDidLoadметода.

Я хотел бы, чтобы X произошло, только если ViewController не получил уведомление.

Архитектура может показаться сломанной, но мой вопрос в том, есть ли какие-то данные внутри defaultCenterговорит нам, если наблюдатель получил уведомление?

1 ответ

  1. Нет никаких методов обратного вызова для нас, чтобы знать, получено ли отправленное notificationif наблюдателем.

    Согласно 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‘ s apple docs, мы должны узнать его функцию:

    Объекты регистрируются в Центре уведомлений для получения уведомлений (объекты NSNotification) с помощью методов addObserver(_:selector:name:object:) или addObserver(forName:object:queue:using:).

    И из документов не могу найти ни одного упоминания о вашем требовании.