【问题标题】:NSNotificationCenter in document-based app基于文档的应用程序中的 NSNotificationCenter
【发布时间】:2012-09-04 15:59:12
【问题描述】:

我正在使用NSNotificationCenter 在基于文档的应用程序中发送自定义通知。

基于文档的应用程序可以有许多打开的文档。理想情况下,我希望文档及其子项仅接收在文档或其子项中创建的通知。换句话说,一个文档应该只接收同一个文档生成的通知。

起初我以为我可以使用addObserver:selector:name:object:notificationSender 参数,但后来我意识到我并不总是知道哪个对象会发送通知。

我是否必须检查我是否在每个自定义通知的正确文档中?有没有更好的方法来做到这一点?

【问题讨论】:

    标签: macos cocoa nsnotificationcenter nsdocument


    【解决方案1】:

    如果您将主文档用作addObserver:selector:name:object:postNotificationName:object:notificationSender 参数,我认为您的方法有效。

    【讨论】:

    • 这是我第一次尝试的。但如果我这样做,我将无法发送真正的发件人(一些与生成通知的文档相关的对象)。
    • @hpique: 或许你可以使用userInfo参数来传递真实的发送者?
    【解决方案2】:

    您可以在 NSDocument 类中定义 NotificationCenter 并使用它在文档中发布通知 (Swift):

    class Document: NSDocument {
    
        let notificationCenter = NotificationCenter()
    
        // Other stuff
    }
    

    然后这样称呼它:

    document.notificationCenter.post(name: yourNotificationIdentifier, object: nil)
    

    【讨论】:

      猜你喜欢
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多