IOS NSNotification通知的用法

在ios開發(fā)中,我們會經(jīng)常遇到需要在頁面A和頁面B之間通信的需求,這一需求我們可以用Block、協(xié)議、通知等方法實現(xiàn)。今天談?wù)勍ㄖ挠梅ā?/h4>

有人會問,既然以上幾種方式都可以實現(xiàn)這一需求,那么為什么要用通知呢?
這就要談到NSNotification的特點

  • 可以實現(xiàn)一對多,NSNotification 的實際是一種觀察者模式。

每一個ios程序都有著唯一的一個通知中心,我們使用時通過[NSNotificationCenter defaultCenter]獲取。而它的運行其實相當(dāng)于一個廣播站。
在使用中,我們只需要兩步。

  • 發(fā)通知
  • 收通知

其中,我們需要在要接通知的類中注冊觀察者

NSNotificationCenter * center = [NSNotificationCenter defaultCenter];
    //添加當(dāng)前類對象為一個觀察者,name和object設(shè)置為nil,表示接收一切通知
    [center addObserver:self selector:@selector(yourMethod) name:@"yourName" object:nil];

其中@selector(yourMethod)為接收到通知所會執(zhí)行的方法,name為通知的名稱,設(shè)置后此通知中心只會接收通知名為'name'的通知,同理object
object為通知所帶參數(shù)對象的類

此后,在需要發(fā)送通知的地方,我們只需要創(chuàng)建一個NSNotification實例,并將通知發(fā)送出去即可。

NSNotification * notice = [NSNotification notificationWithName:@"name of notification" object:nil userInfo:@{@"1":@"123"}];
    //發(fā)送消息
       [[NSNotificationCenter defaultCenter]postNotification:notice];

我們可以在object和userInfo中添加自己所需要傳遞的參數(shù),若不用,則設(shè)為nil。其中,我們在接收通知的方法中,通過(NSNotification*)text; text.object的方法來獲取到傳遞的object對象的內(nèi)容。

至此,通知的基礎(chǔ)使用就說完了。需要記住的是,一個通知中心可以通過name和object參數(shù)來控制自己所能接到的通知,若都為nil,則可以接收到所有通知。所以,我們在使用過程中要注意控制通知的接收者。


Tino Wu

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容