NotificationCenter的基本用法post方法一般用這兩個速址。
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)
aName
aName
是名稱煮岁,定義一個類型為NSNotification.Name
的全局常量日丹,或者擴(kuò)展NSNotification.Name
即可剿另。為了預(yù)防字符串重復(fù)刁赖,最好保持rawValue
和常量名一致。例如:
let iAmANotificationName = Notification.Name(rawValue: "iAmANotificationName")
NotificationCenter.default.post(name: iAmANotificationName...)
這樣一來泞歉,所有觀察iAmANotificationName
的對象都會收到這條post了逼侦。
object
object
一般是在哪個類中調(diào)用post
方法,就傳哪個類腰耙。有的人喜歡用這個參數(shù)來傳遞參數(shù)榛丢,不是說不行,只是我感覺不太舒服挺庞。
userInfo
userInfo
才是用來傳參數(shù)的字段晰赞,[AnyHashable : Any]
的范圍足夠你愛傳什么傳什么了。
參數(shù)調(diào)用
設(shè)計觀察者方法時选侨,記得加一個類型為Notification
的參數(shù)宾肺,就可以用來接受notification
,并讀取object
和userInfo
了侵俗,非常簡單。例如:
func receivedNotification(_ notification: Notification) {
let userInfo = notification.userInfo
let object = notification.object
...
}