对Swift中NSNotification的怀疑

时间:2014-07-02 06:44:07

标签: swift

我正在为iOS开发我的第一个应用程序而不了解通知。

我发送的通知为:

DefaultCenter.postNotificationName("evRodadaAtualizei", object: nil)

在另一个课程中,我有一个观察此通知的方法:

DefaultCenter.addObserver(self, selector: Selector("Atualizar"), 
    name: "evRodadaAtualizei", object: nil)

我的问题是:

此观察员会听取该名称的任何通知吗?宣布通知的班级并不重要?换句话说,是否可以放置所有通知的位置(如通知库),因为它们都独立于类?

如果我理解正确,这与C#或VB.Net中事件的概念非常不同,其中事件属于类。

1 个答案:

答案 0 :(得分:2)

Cocoa中的通知在班级间工作。无论创建或观察通知的位置都无关紧要。

但是,请注意object方法上的postNotificationName参数。如果设置,这应该与发布通知的对象相对应。如果您只想观察给定对象的通知,请在添加观察者时将object参数设置为该对象。 e.g。

class MyObjectClass {

   func doSomething() {
      // Do something and then notify

      DefaultCenter.postNotificationName("evRodadaAtualizei", object: self)
   }
}

class MyObserverClass {

    func startProcess() {

        var myObject = MyObjectClass()

        DefaultCenter.addObserver(self, selector: Selector("Atualizar"), name: "evRodadaAtualizei", object: myObject)
    }

    func Atualizar() {

    }

}