這是乙個觀察者模式。
首先在你需要監聽的類中加入觀察者:
- (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...