欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS中的通知機制

 更新時間:2016年04月12日 14:24:13   作者:errylsxu  
網上經常說iOS的通知機制是使用了觀察者模式,里面有兩個角色,其一是poster(發(fā)送者),另一個是observer(接受信息的訂閱者)。接下來通過本文給大家介紹iOS中的通知機制,感興趣的朋友一起學習吧

網上經常說iOS的通知機制是使用了觀察者模式,里面有兩個角色,其一是poster(發(fā)送者),另一個是observer(接受信息的訂閱者)。但我認為重要的角色是通知中心,它是整個通知機制的核心,有poster發(fā)送者發(fā)送的消息必定要到達通知中心,再由通知中心根據(jù)這個消息被哪些observer訂閱者訂閱過,就把消息往那些訂閱者去分發(fā)。整體可以與現(xiàn)在的電子郵件結構作類比的。

但要額外說明一下,iOS的通知雖然也叫Notification通知,但是與Android中的通知是不一樣的,在Android中的通知是一種消息推送的形式,而在iOS中肯定也有消息推送,這就是推送機制那部分的內容。說會這個通知機制的其實就是原本在學習C#時的事件,只不過這里的事件是對于整個系統(tǒng)的全局事件,任何一方往系統(tǒng)的這個全局事件去注冊綁定了方法,到事件被觸發(fā)的時候就能夠被執(zhí)行。

整個通知的操作流程,我們只需要把poster和observer設置好就可以了

對于Poster的操作比較簡單,他只需要往通知中心推通知就可以了,采用以下的代碼

[[NSNotificationCenter defaultCenter] postNotificationName:@”PostOne” object:@”This is posterone”];

或者

[[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@”PostOne” object:@”This is posterone”]];

NotificationWithName: object: 方法還有一個重載就是有userInfo: 參數(shù),它是NSDictionary的字典類型,就是用于傳遞用戶參數(shù)。

  對于Observer則相對沒Poster那么簡單,在C#中進行事件注冊綁定的時候也發(fā)現(xiàn),觸發(fā)事件的只需要像調用方法那樣子調用就可以了,但是注冊那一方則需要為事件綁定方法,又要定義方法,而在iOS的通知機制中,需要注冊,回調處理(就是事件中的方法定義),用完了還要去刪除。

注冊

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callBack1:) name:@”PostOne” object: nil]; 

這里的參數(shù)是跟postNotificationName: object:對應的。注冊了哪個通知name參數(shù)就填上對對應的值

回調處理

-(void) callBack1(NSNotification*)notification
{
notification.name://通知的名稱
notification.object;//發(fā)送通知時的object
notification.userInfo//發(fā)送通知時的userInfo
}

刪除

在使用消息完畢(就是不再對接收到的消息作處理的)之后,需要進行刪除操作

[[NSNotificationCenter defaultCenter]removeObserver: self];//刪除所有注冊過的通知
[[NSNotificationCenter defaultCenter]removeObserver:self name:@”PostOne“ object:nil];//刪除名稱為”PostOne“的通知

補充:

ios中觀察者模式與通知機制,及KVO

在ios開發(fā)中,通知機制和KVO都是依靠觀察者模式得以實現(xiàn)。通知機制與KVO的不同之處在于,前者是一個中心對象為所有觀察者提供變更通知,后者是被觀察對象直接向觀察者發(fā)送通知。

以下關注觀察者模式與通知機制實現(xiàn):

1、觀察者模式中Subject對象,又可稱目標對象,是通知的發(fā)布者,又是被觀察者。提供注冊和取消注冊的方法;Observer對象,又可稱為觀察者,是通知的訂閱者。Observer類中,相識Subject,以達到能夠接收通知。

2、ios中的通知機制,是Cocoa Touch框架為開發(fā)者開發(fā)的類,讓開發(fā)者不必自己寫觀察者模式,用到它便能實現(xiàn)。對于我而言,通知機制的所有使用,都集中到一個類中。而導致我用通知機制去理解觀察者模式時,迷糊于Subject和Observer,誰是通知的發(fā)送者,因為類中集結了觀察者和發(fā)送者。

相關文章

  • 全面解析Objective-C中的block代碼塊的使用

    全面解析Objective-C中的block代碼塊的使用

    這篇文章主要介紹了Objective-C中的block代碼塊的使用,包括閉包等重要特性的講解,需要的朋友可以參考下
    2015-11-11
  • iOS自定義可展示、交互的scrollView滾動條

    iOS自定義可展示、交互的scrollView滾動條

    這篇文章主要為大家詳細介紹了iOS自定義可展示、交互的scrollView滾動條,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • iOS  Mask屬性的詳細介紹及應用實例

    iOS Mask屬性的詳細介紹及應用實例

    這篇文章主要介紹了iOS Mask屬性的詳細介紹的相關資料,這里對Mask的屬性進行了詳細說明并附簡單代碼實例,幫助大家更直接學習理解,這部分知識,需要的朋友可以參考下
    2016-11-11
  • iOS開發(fā)筆記--詳解UILabel的相關屬性設置

    iOS開發(fā)筆記--詳解UILabel的相關屬性設置

    這篇文章主要介紹了iOS開發(fā)筆記--詳解UILabel的相關屬性設置,對初學者具有一定的參考價值,有需要的可以了解一下。
    2016-11-11
  • IOS實現(xiàn)視頻動畫效果的啟動圖

    IOS實現(xiàn)視頻動畫效果的啟動圖

    這篇文章實現(xiàn)的是一個關于啟動頁或者引導頁的視頻動畫效果的實現(xiàn)過程,對于大家開發(fā)APP具有一定的參考借鑒價值,有需要的可以來看看。
    2016-09-09
  • MAUI模仿iOS多任務切換卡片滑動的交互實現(xiàn)代碼

    MAUI模仿iOS多任務切換卡片滑動的交互實現(xiàn)代碼

    這篇文章主要介紹了[MAUI]模仿iOS多任務切換卡片滑動的交互實現(xiàn),使用.NET MAU實現(xiàn)跨平臺支持,本項目可運行于Android、iOS平臺,需要的朋友可以參考下
    2023-05-05
  • iOS圖片壓縮、濾鏡、剪切及渲染等詳解

    iOS圖片壓縮、濾鏡、剪切及渲染等詳解

    這篇文章主要給大家介紹了關于iOS圖片壓縮、濾鏡、剪切及渲染等的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • iOS左滑手勢失效的解決方法

    iOS左滑手勢失效的解決方法

    這篇文章主要為大家詳細介紹了iOS左滑手勢失效的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Xcode提高開發(fā)效率的代碼塊分享

    Xcode提高開發(fā)效率的代碼塊分享

    這篇文章跟大家介紹的是一些提高大家開發(fā)效率Xcode的代碼塊,以及如何備份代碼塊,Xcode的代碼片段(Code Snippets)創(chuàng)建自定義的代碼片段,當你重用這些代碼片段時,會給你帶來很大的方便。有需要的朋友們可以參考借鑒。
    2016-09-09
  • 阿里數(shù)據(jù)iOS端啟動速度優(yōu)化心得

    阿里數(shù)據(jù)iOS端啟動速度優(yōu)化心得

    本篇文章給大家詳細分析了阿里數(shù)據(jù)iOS端啟動速度優(yōu)化的知識點以及心得,對此有興趣的朋友參考學習下吧。
    2018-02-02

最新評論