NSNotificationCenter 深入使用

2021-07-10 04:14:22 字數 1991 閱讀 8786

通知傳送,一般我們會使用

[[nsnotificationcenter defaultcenter]

addobserver

:self

selector:@selector(mytest:) name:@"mytest"object:nil];

然後在任意地方使用

[[nsnotificationcenter defaultcenter]

postnotificationname:@"mytest" object:nil];

被能是觀察者self呼叫其mytest:方法。

而我們會發現,方法

-

addobserver

:selector

:name

:object:

中object:一般傳nil,但我們往往不知道他的用處,看了網上一些介紹說是引數的說法並不對,其實實際上是傳送者。

- (void)addobserver:(id)notificationobserver

selector:(sel)notificationselector

name:(nsstring *)notificationname

object:(id)notificationsender

其中,

notificationobserver為觀察者

notificationselector為收到通知後觀察者呼叫的方法

notificationname為通知的key

notificationsender為通知的傳送者,也就是該通知只接受來自notificationsender的通知;如果改引數為nil,則接受所以的通知(包括傳送時指定傳送者的通知)

- (void)postnotificationname:(nsstring *)notificationname

object:(id)notificationsender

其中,

notificationname為通知的key

notificationsender為傳送者,設定後,該通知只向設定了監視的該傳送者的通知或者設定傳送者為nil的通知傳送訊息;若這裡傳送者設定為nil,則只有設定傳送者為nil的通知才會收到通知

如果傳送通知的時候需要附帶其他資訊,可使用

- (void)postnotificationname:(nsstring *)notificationname

object:(id)notificationsender

userinfo:(nsdictionary *)userinfo

附帶乙個字典引數userinfo過去。

設用監聽通知

[[nsnotificationcenter defaultcenter]

addobserver

:self

selector:@selector(mytest:) name:@"mytest"object:nil];

則通知的呼叫mytest:方法

- (void)mytest:(nsnotification*) notification
移除觀察者的所有通知(乙個觀察者可以有多個通知監聽)

- (void)removeobserver:(id)notificationobserver
若要移除觀察者的指定通知,使用

- (void)removeobserver:(id)notificationobserver

name:(nsstring *)notificationname

object:(id)notificationsender

NSNotificationCenter 用法詳解

作用 nsnotificationcenter是專門供程式中不同類間的訊息通訊而設定的.註冊通知 即要在什麼地方接受訊息 nsnotificationcenter defaultcenter addobserver self selector selector 方法名稱 name 唯一標示 obje...

NSNotificationCenter 程式設計簡介

1.註冊通知 即要在什麼地方接受訊息 要註冊接收通知的函式以及傳遞的物件,訊息名稱 nsnotificationcenter defaultcenter addobserver self selector selector mytest name mytest object nil 引數介紹 add...

NSNotificationCenter訊息通訊

nsnotificationcenter訊息通訊 作用 nsnotificationcenter是專門供程式中不同類間的訊息通訊而設定的.註冊通知 即要在什麼地方接受訊息 nsnotificationcenter defaultcenter addobserver self selector sel...