日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS通知机制

發布時間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS通知机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  網上經常說iOS的通知機制是使用了觀察者模式,里面有兩個角色,其一是poster(發送者),另一個是observer(接受信息的訂閱者)。但我認為重要的角色是通知中心,它是整個通知機制的核心,有poster發送者發送的消息必定要到達通知中心,再由通知中心根據這個消息被哪些observer訂閱者訂閱過,就把消息往那些訂閱者去分發。整體可以與現在的電子郵件結構作類比的。但要額外說明一下,iOS的通知雖然也叫Notification通知,但是與Android中的通知是不一樣的,在Android中的通知是一種消息推送的形式,而在iOS中肯定也有消息推送,這就是推送機制那部分的內容。說會這個通知機制的其實就是原本在學習C#時的事件,只不過這里的事件是對于整個系統的全局事件,任何一方往系統的這個全局事件去注冊綁定了方法,到事件被觸發的時候就能夠被執行。

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

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

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

或者

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

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

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

注冊

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

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

回調處理

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

刪除

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

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

?

轉載于:https://www.cnblogs.com/HopeGi/p/4150867.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的iOS通知机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。