最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS中的通知機(jī)制

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

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

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

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

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

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

或者

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

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

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

注冊(cè)

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

這里的參數(shù)是跟postNotificationName: object:對(duì)應(yīng)的。注冊(cè)了哪個(gè)通知name參數(shù)就填上對(duì)對(duì)應(yīng)的值

回調(diào)處理

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

刪除

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

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

補(bǔ)充:

ios中觀察者模式與通知機(jī)制,及KVO

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

以下關(guān)注觀察者模式與通知機(jī)制實(shí)現(xiàn):

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

2、ios中的通知機(jī)制,是Cocoa Touch框架為開發(fā)者開發(fā)的類,讓開發(fā)者不必自己寫觀察者模式,用到它便能實(shí)現(xiàn)。對(duì)于我而言,通知機(jī)制的所有使用,都集中到一個(gè)類中。而導(dǎo)致我用通知機(jī)制去理解觀察者模式時(shí),迷糊于Subject和Observer,誰(shuí)是通知的發(fā)送者,因?yàn)轭愔屑Y(jié)了觀察者和發(fā)送者。

相關(guān)文章

  • iOS使用fastlane實(shí)現(xiàn)持續(xù)集成的方法教程

    iOS使用fastlane實(shí)現(xiàn)持續(xù)集成的方法教程

    這篇文章主要給大家介紹了關(guān)于iOS使用fastlane如何實(shí)現(xiàn)持續(xù)集成的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • iOS發(fā)送驗(yàn)證碼倒計(jì)時(shí)應(yīng)用

    iOS發(fā)送驗(yàn)證碼倒計(jì)時(shí)應(yīng)用

    點(diǎn)擊發(fā)送驗(yàn)證碼button。倒計(jì)時(shí)開始,這篇文章就為大家詳細(xì)介紹了iOS發(fā)送驗(yàn)證碼倒計(jì)時(shí)應(yīng)用的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • IOS中UIWebView、WKWebView之JS交互

    IOS中UIWebView、WKWebView之JS交互

    本篇文章主要介紹了IOS中UIWebView、WKWebView之JS交互,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • iOS系統(tǒng)的底層通知框架庫(kù)示例詳解

    iOS系統(tǒng)的底層通知框架庫(kù)示例詳解

    這篇文章主要給大家介紹了關(guān)于iOS系統(tǒng)的底層通知框架庫(kù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 淺談iOS解析HTMl標(biāo)簽以及開發(fā)中的一些坑

    淺談iOS解析HTMl標(biāo)簽以及開發(fā)中的一些坑

    這篇文章主要介紹了淺談iOS解析HTMl標(biāo)簽以及開發(fā)中的一些坑,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 詳解iOS游戲開發(fā)中Cocos2D的坐標(biāo)位置關(guān)系

    詳解iOS游戲開發(fā)中Cocos2D的坐標(biāo)位置關(guān)系

    這篇文章主要介紹了iOS游戲開發(fā)中Cocos2D的坐標(biāo)位置關(guān)系,Cocos2D是專門用來(lái)開發(fā)iOS游戲的開源框架,文中示例代碼采用Objective-C語(yǔ)言,需要的朋友可以參考下
    2016-02-02
  • 深入淺析IOS中UIControl

    深入淺析IOS中UIControl

    UIControl,相信大家對(duì)其并不陌生吧,比如平常最常用的UIButton就是繼承自UIControl的。下面通過(guò)本篇文章給大家介紹ios中UIControl,感興趣的朋友一起學(xué)習(xí)吧
    2015-10-10
  • 詳解iOS11關(guān)于導(dǎo)航欄問題

    詳解iOS11關(guān)于導(dǎo)航欄問題

    本篇文章主要介紹了詳解iOS11關(guān)于導(dǎo)航欄問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • iOS界面布局簡(jiǎn)化UIStackView使用詳解

    iOS界面布局簡(jiǎn)化UIStackView使用詳解

    這篇文章主要為大家介紹了iOS界面布局簡(jiǎn)化UIStackView使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • iOS獲取本地音頻文件(屬性/信息)

    iOS獲取本地音頻文件(屬性/信息)

    這篇文章主要為大家詳細(xì)介紹了iOS獲取本地音頻文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07

最新評(píng)論

即墨市| 临沂市| 东明县| 当雄县| 旺苍县| 西乌珠穆沁旗| 南皮县| 柳州市| 静乐县| 桃江县| 民勤县| 资中县| 喜德县| 秦安县| 夏河县| 安吉县| 遂宁市| 浏阳市| 广东省| 湖南省| 绥宁县| 泸定县| 洞口县| 泰宁县| 巴林左旗| 竹山县| 嘉善县| 台南县| 潼关县| 汝城县| 大同县| 德令哈市| 奈曼旗| 比如县| 南靖县| 收藏| 巴林右旗| 赞皇县| 外汇| 阿拉善右旗| 邯郸县|