iOS通知機制,ios通知

來源:互聯網
上載者:User

iOS通知機制,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#中進行事件註冊綁定的時候也發現,觸發事件的只需要像調用方法那樣子調用就可以了,但是註冊那一方則需要為事件Binder 方法,又要定義方法,而在iOS的通知機制中,需要註冊,回調處理(就是事件中的方法定義),用完了還要去刪除。

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

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

回調處理
-(void) callBack1(NSNotification*)notification{    notification.name://通知的名稱    notification.object;//發送通知時的object    notification.userInfo//發送通知時的userInfo}
刪除

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

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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.