iOS通知中樞

來源:互聯網
上載者:User

iOS通知中樞
iOS開發中的傳送訊息機制總的來說細分為三大類:

本地通知

推播通知

通知中樞

三者之間並沒有什麼直接性質的聯絡,通知中樞是嚮應用程式中註冊某個觀察者的所有對象廣播訊息,通過通知中樞可以很好的協調不同對象之間的訊息通訊。

注意:

每一個應用程式都有且只有一個通知中樞(NSNotificationCenter)執行個體

代理和通知中樞都是協調各個對象之間進行訊息通訊,通知中樞在功能上與代理有些類似,二者在選擇時有什麼區分?

代理對應的關係的一對一的關係,而通知是一對多的關係,所以在遇到需要一處改變引起多出
變化的功能上我們最好選擇通知。

例如 :

QQ音樂App上換皮膚效果

讀書軟體改變字型大小效果

在實際開發中合理的使用二者,防止大材小用

一個通知成功實施的必有要三要素

通知發行者

通知中樞

通知接收者

一個完整通知包含三個屬性

name:通知的名稱

object:通知的發行者

userInfo:通知者給通知接收者的資訊內容

通知接收者向通知中樞註冊通知方法
- (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSString *)aName object:(nullable id)anObject;  observer:監聽器,即誰要接收這個通知aSelector:收到通知後,回調監聽器的這個方法,並且把通知對象當做參數傳入 aName:通知的名稱。如果為nil,那麼無論通知的名稱是什麼,監聽器都能收到這個通知 anObject:通知發行者。如果為anObject和aName都為nil,監聽器都收到所有的通知
通知中樞發布通知的三種方法
? - (void)postNotification:(NSNotification *)notification;? - (void)postNotificationName:(NSString *)aName object: (id)anObject;? - (void)postNotificationName:(NSString *)aName object:(id)anObjectuserInfo:(NSDictionary *)aUserInfo;
通知下的dealloc方法

我們在通知中樞註冊完後,通知中樞是非常靈敏的,當條件被觸發後就會不斷的向註冊者發送訊息,但當我們的註冊者已經被釋放了,這時候就會造成野指標,引發程式崩潰,所以在我們對象被釋放的時候,應該把該對象向通知中樞註冊的通知釋放掉。

    - (void)dealloc    {        [[NSNotificationCenter defaultCenter] removeObserver:self];     }
另外取消註冊的方法有兩個:
- (void)removeObserver:(id)observer;- (void)removeObserver:(id)observer name:(nullable NSString *)aName object:(nullable id)anObject;//第二個多了一個name的參數可以具體到該對象中某個通知
通知中樞的常見的實際應用

1. 裝置旋轉

    UIDeviceOrientationDidChangeNotification

2. 鍵盤操作

UIKeyboardWillShowNotification // 鍵盤即將顯示 UIKeyboardDidShowNotification // 鍵盤顯示完畢 UIKeyboardWillHideNotification // 鍵盤即將隱藏 UIKeyboardDidHideNotification // 鍵盤隱藏完畢 UIKeyboardWillChangeFrameNotification // 鍵盤的位置尺寸即將發生改變 UIKeyboardDidChangeFrameNotification // 鍵盤的位置尺寸改變完畢 
提醒

通知的正常執行的順序為:接收者在通知中樞註冊通知——>通知者在通知中樞發布通知———>釋放通知中樞的註冊通知。順序出錯將會產生錯誤。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.