IOS學習筆記之通知

2021-07-09 09:41:57 字數 2195 閱讀 1110

1、通知的概念

ios系統提供了nsnotificationcenter(通知中心)設計,這種設計允許開發者以松耦合的方式實現ios 應用內各個物件之間的通訊。

nsnotificationcneter實現了觀察者模式,允許應用的不同物件之間以松耦合的方式進行通訊。nsnotificationcenter就是ios sdk為開發者實現的觀察者模式,這種設計模式的示意圖如圖所示:

nsnotificationcenter相當於乙個"訊息中心",首先由observer所在的物件向nsnotificationcenter進行註冊,表明observer對哪些nsnotification感興趣。在沒有任何物件傳送nsnotification的情況下,這些observer都處於靜止狀態,不會執行任何**。只要有乙個物件傳送nsnotification之後,所有在nsnotificationcenter註冊過的,且對該nsnotification的名稱對應的observer都會被激發。

ios sdk 中很多物件都會傳送nsnotification

(2)當鍵盤出現時,uiwindow會對外傳送nsnotification

(3)當uitableview選中行發生改變時,uitableview會對外傳送nsnotification

...(4)檢視uikit的api文件,專門有乙個分類列出該元件可能發出的nsnotification

2、通知常用的方法

(1)獲取單例模式

[nsnotificationcenter defaultcenter];

(2)註冊監聽者

-addobserver:selector:name:object:該方法第乙個引數為監聽者,第二個引數selector引數用於指定監聽者的監聽方法,第三個引數name指定通知的名稱,第四個引數object代表傳送者物件(poster),如果object引數為nil,則代表用於監聽任何物件發出的通知。

(3)刪除監聽者

-removeobserver:name:object:刪除對指定監聽者(通過name引數指定)、指定通知的監聽。

(4)傳送通知

-postnotificationname:object:該方法第乙個引數指定通知的名稱,第二個引數指定通知的object

3、通知的應用

nsnotificationcenter只允許同乙個程式中的不同物件之間進行通訊,它們不能跨越不同的應用。

我們可以使用nsnotificationcenter監聽自定義通知,也可以使用nsnotificationcenter監聽系統元件的通知。

//監聽自定義訊息

[[nsnotificationcenter

defaultcenter] addobserver:

self

selector:

@selector

(receivemsg:) name:

@"test"

object:

nil];

-(void)receivemsg:(nsnotification *)notification

[[nsnotificationcenter

defaultcenter] postnotificationname:

@"test"

object:

nil];

//監聽系統訊息

[[nsnotificationcenter

defaultcenter] addobserver:

self

selector:

@selector

(keyboardwillshow:) name:uikeyboardwillshownotificationobject:

nil];

-(void)keyboardwillshow:(nsnotification *)notification

4、nsnotifiication的含義

nsnotification代表poster(請求者)與observer(監聽者)之間的資訊載體,該物件包含如下唯讀屬性:

(1)name:該屬性代表通知的名稱,在建立監聽者時就是根據該名稱進行註冊的。

(2)object:該屬性代表該通知傳遞的物件。

(3)userinfo:該屬性是乙個nsdictionary,用於攜帶通知的附加資訊。

IOS學習筆記11 IOS通知中心

ios中還有一類產生事件的功能,那就是通知。通過通知,可以在一定的條件下觸發響應的事件。類似於android中的廣播機制 broadcase receiver 接收到通知 廣播 後,便可執行指定的方法。通過nsnotificationcenter獲取通知物件,註冊並使用通知。下面 以乙個例子為例 n...

ios 通知登出 iOS 通知

通知模式 乙個物件能夠給其他任意數量的物件廣播資訊。物件之間可以沒有耦合關係。nsnotification 通知 封裝了要廣播的資訊。nsnotificationcenter 通知中心 管理註冊接收訊息物件,廣播訊息。observer 觀察者 需要監測廣播資訊的物件,即接收資訊的物件。接收資訊物件在...

iOS開發之通知中心

ios開發過程中,一定要涉及到通知中心和觀察者兩種開發模式。現在講明一些通知中心的簡單應用。通知中心接收事件,盡量有新增就要有刪除,object是相互傳遞的引數 nsnotificationcenter defaultcenter addobserver self selector selector...