当发生了某事的时候,向相关应用程序广播通知通常会有所帮助。例如,当用户按下home键的时候,默认情况下只有应用程序委托会收到一条通知。但是,应用程序中的对象可能也希望获知类似的事件。
这时候就要用到NSNotification类,它一个对象向其他任意对象发送的广播消息,这些其他对象已经提前注册了要获得这些通知。通知由NSNotification管理,是一个管理通知发送的单一对象。
要注册通知的代码:
let notificationCenter = NSNotificationCenter.defaultCenter()
let operationQueue = NSOperationQueue.mainQueue()
let applicationDidEnterBackgroundObserver = notificationCenter.addObserverForName(UIApplicationDidEnterBackgroundNotification,object: nil,queue: operationQueue) {
(notification:NSNotification!) in
print("hello")
}
notificationCenter.removeObserver(applicationDidEnterBackgroundObserver)
注意:如果没有取消对通知的注册,会留下孤悬通知处理器,这可能会导致内存浪费的,甚至会使得程序崩溃(哇啊啊)。因此一定要记得取消对通知处理器的注册。
还可以张贴自己的通知:
let myNotification = "myNotificationType"
notificationCenter.postNotificationName(myNotification,object:nil)
通知类型实际上就是字符串啦