1.NSNotification
将包含的信息(桥接到
Notification
)广播给注册的观察者
1.1 声明
1 | class NSNotification : NSObject |
1.2 讨论
- 一个通知包含name、object、optional dictionary,通过
NotificationCenter
或者DiSwifttributedNotificationCenter
广播。 - name是通知的身份标签。
- object是通知的发出者要发送给观察者的任意对象(通常来说,该object就是消息的发出者)
- dictionary存储其他相关的对象
- NSNotification是不变的
- 不要直接创建自己的通知,要通过调用
NotificationCenter
的post(name:object:)
方法,和post(name:object:userInfo:)
方法.
⚠️:Swift提供了
Notification
桥接到NSNotification。
1.3 对象比较
- 使用本地指针的相等性来比较通知中的所有对象。Distributed notifications使用字符串作为他们的对象,他们之间使用
Equal(_:)
来比较相等性
1.4 创建子类
- 可以子类化NSNotification来包含除name、object、dictionary之外的信息,但是这些信息要在通知者和观察者之间达成一致。
- NotificationCenter是个没有实例变量的类簇,因此你就要子类化NSNotification并重写原始的方法
name
,object
, 和userInfo
。 - 可以选择任意指定构造器,但是要保证那个构造器没有调用父类的
init()
方法。NSNotification的init方法会抛出异常。