NSNotification學習筆記

2022-04-23 05:51:06 字數 1339 閱讀 8554

這是乙個觀察者模式。

首先在你需要監聽的類中加入觀察者:

- (void)addobserver:(id)observer selector:(sel)aselector name:(nsstring *)aname object:(id)anobject;

這個觀察者在監聽到anobject傳送名字為aname的notification時,呼叫selector的方法,在aselector方法中得到userinfo。

anobject表示從誰那兒傳送出來的訊息。

一般的selector中的方法可以這麼寫:

- (void)method: (nsnotification:)sender

也就是說監聽到了anobject發出訊息,訊息的名字是aname,此時observer就呼叫aselector方法,把notification的userinfo拷貝到本地。

然後在被監聽的類中傳送通知:

可以使用一下三個方法:

- (void)postnotification:(nsnotification *)notification;

- (void)postnotificationname:(nsstring *)aname object:(id)anobject;

- (void)postnotificationname:(nsstring *)aname object:(id)anobject userinfo:(nsdictionary *)auserinfo;

anobject表示誰傳送了這個訊息。

第乙個方法直接把定義好的notification發出,notification的初始化方法如下:

+ (id)notificationwithname:(nsstring *)aname object:(id)anobject userinfo:(nsdictionary *)userinfo 

第二個方法只定義了訊息名和發訊息者,沒有傳遞實際的引數,貌似也可以把anobject自身作為訊息傳遞出去,這個還沒有搞懂。差不多就是作為observer可以**poster。

第三個方法指定訊息名稱,發訊息者,並且傳遞了userinfo。也就相當於初始化了乙個notification,並且用第乙個方法發出。

如果object:nil表示以廣播方式發訊息或者得到訊息,這個時候只要訊息名字是對的就可以得到這個訊息。

object:用來表示 誰傳送的訊息,或者從誰得到訊息。

引數應該在userinfo裡面傳遞。

nsnotification的作用是在同一程式的不同類中傳遞引數,傳遞的方法是把引數放在nsdictionary型別的userinfo中。

nsnotificationcenter的作用:我的理解就是乙個中轉站,每個物件都有自己的

通知(NSNotification)的基本學習

通知 觀察a,如果a發生變化,需要b去做一些事情,就給b註冊觀察者,分兩種情況 第一種,不傳遞引數,只是通知b,a發生了變化 a的 nsnotificationcenter defaultcenter postnotificationname change object nil b的 nsnotif...

NSNotification 通知傳值

方法如下 在a頁面viewdidload中註冊乙個通知 objc view plain copy 註冊通知,進行傳值 name reloadvoewnotification 這個就是其唯一標示符.系統是用來做鑑別其惟一性,就是裝置標示符一樣 nsnotificationcenterdefaultce...

NSNotification通知的使用

nsnotification通知傳值的使用 1 建立通知 建立在當前需要使用的頁面 nsnotificationcenter defaultcenter addobserver self selector selector notificationmethod name customname obj...