iOS中通知的使用
一、NSNotificationCenter簡介:NSNotificationCenter是一個單進程范圍內(nèi)的全局通知中心,每一個App都有一個單例的NSNotificationCenter,通過一個字符串來注冊和觸發(fā)通知,為不同類之間進行消息傳遞和函數(shù)調(diào)用提供了一種比較簡單的方法,類之間的關(guān)聯(lián)性比較弱。
二、NSNotificationCenter一般使用步驟1.通過[NSNotificationCenter defaultCenter]類獲取通知中心實例。2.在想要被通知的類里面注冊通知,相當于注冊了一個觀察者:addObserver:selector:name:object:3.觸發(fā)通知:postNotificationName:object:4.在不需要觀察者或者觀察者對象釋放前,移除觀察者:removeObserver:name:object:
三、NSNotificationCenter需要注意的地方1.通知中心并不retain添加進來的觀察者對象,當你添加了一個觀察者對象到通知中心,然后釋放了觀察者對象,但是沒有從通知中心中移除,當通知中心向它發(fā)送消息時,會發(fā)生異常。2.通知中心(NSNotificationCenter)只能在單進程內(nèi)傳送消息,如果想要在多進程內(nèi)傳送消息,使用NSDistributedNotificationCenter,但是這個類只能在Mac OX中使用。也就是說,ios不支持進程間的通知。3.通知中心消息的發(fā)送是同步的,postNotification方法是在所有消息都發(fā)送完畢之后才返回的。如果想要使用異步通知中心,要使用NSNotificationQueue類。
四、NSNotificationQueue簡介1.NSNotificationQueue對象作為通知中心(NSNotificationCenter)的一個緩沖區(qū)。2.當一個通知中心分發(fā)通知的時候,將已經(jīng)注冊的通知對象放入隊列,通知可以推遲到當前通知隊列執(zhí)行完畢或者空閑時發(fā)送。3.重復(fù)的通知也可以合并,當有多個一樣的通知存在時,只發(fā)送一次。4.通知隊列通過一個先入先出的隊列維護通知(NSNotification)。當通知排到隊列的前面,通知被發(fā)送到通知中心,通知中心將通知發(fā)送到所有注冊的觀察者對象。5.每個線程都有一個默認的通知隊列,和全局的NSNotificationCenter綁定。你可以創(chuàng)建你自己的通知隊列,或者為通知中心和線程創(chuàng)建多個通知隊列。
五、NSNotificationQueue使用步驟1.創(chuàng)建新的或者獲取現(xiàn)有的通知隊列,都與全局通知中心綁定。實例方法:initWithNotificationCenter:類方法:defaultQueue2.添加通知到通知隊列:enqueueNotification:postingStyle:coalesceMask:forModes:? 從隊列中刪除通知:dequeueNotificationsMatching:coalesceMask:3.當通知添加到隊列中以后,通知會以隊列的方式,排隊發(fā)送。? 通知以異步的方式發(fā)送。
六、iOS本地通知1.UILocalNotification,可用于iOS4.0及以上,它可以像推送服務(wù)那樣彈出通知,但是只是本地觸發(fā)的,非服務(wù)器端觸發(fā)。2.屬性:(1)fireDate:發(fā)送通知的時間(2)alertBody:彈出框顯示的文本(3)alertAction:右側(cè)按鈕文本(4)alertLaunchImage:進入程序時,啟動畫面的圖像名稱(5)applicationIconBadgeNumber:應(yīng)用圖標上標的數(shù)字(6)soundName:彈出通知時播放的聲音,是應(yīng)用內(nèi)部的資源文件。3.使用:[[UIApplication sharedApplication] scheduleLocalNotification:notification] 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎
二、NSNotificationCenter一般使用步驟1.通過[NSNotificationCenter defaultCenter]類獲取通知中心實例。2.在想要被通知的類里面注冊通知,相當于注冊了一個觀察者:addObserver:selector:name:object:3.觸發(fā)通知:postNotificationName:object:4.在不需要觀察者或者觀察者對象釋放前,移除觀察者:removeObserver:name:object:
三、NSNotificationCenter需要注意的地方1.通知中心并不retain添加進來的觀察者對象,當你添加了一個觀察者對象到通知中心,然后釋放了觀察者對象,但是沒有從通知中心中移除,當通知中心向它發(fā)送消息時,會發(fā)生異常。2.通知中心(NSNotificationCenter)只能在單進程內(nèi)傳送消息,如果想要在多進程內(nèi)傳送消息,使用NSDistributedNotificationCenter,但是這個類只能在Mac OX中使用。也就是說,ios不支持進程間的通知。3.通知中心消息的發(fā)送是同步的,postNotification方法是在所有消息都發(fā)送完畢之后才返回的。如果想要使用異步通知中心,要使用NSNotificationQueue類。
四、NSNotificationQueue簡介1.NSNotificationQueue對象作為通知中心(NSNotificationCenter)的一個緩沖區(qū)。2.當一個通知中心分發(fā)通知的時候,將已經(jīng)注冊的通知對象放入隊列,通知可以推遲到當前通知隊列執(zhí)行完畢或者空閑時發(fā)送。3.重復(fù)的通知也可以合并,當有多個一樣的通知存在時,只發(fā)送一次。4.通知隊列通過一個先入先出的隊列維護通知(NSNotification)。當通知排到隊列的前面,通知被發(fā)送到通知中心,通知中心將通知發(fā)送到所有注冊的觀察者對象。5.每個線程都有一個默認的通知隊列,和全局的NSNotificationCenter綁定。你可以創(chuàng)建你自己的通知隊列,或者為通知中心和線程創(chuàng)建多個通知隊列。
五、NSNotificationQueue使用步驟1.創(chuàng)建新的或者獲取現(xiàn)有的通知隊列,都與全局通知中心綁定。實例方法:initWithNotificationCenter:類方法:defaultQueue2.添加通知到通知隊列:enqueueNotification:postingStyle:coalesceMask:forModes:? 從隊列中刪除通知:dequeueNotificationsMatching:coalesceMask:3.當通知添加到隊列中以后,通知會以隊列的方式,排隊發(fā)送。? 通知以異步的方式發(fā)送。
六、iOS本地通知1.UILocalNotification,可用于iOS4.0及以上,它可以像推送服務(wù)那樣彈出通知,但是只是本地觸發(fā)的,非服務(wù)器端觸發(fā)。2.屬性:(1)fireDate:發(fā)送通知的時間(2)alertBody:彈出框顯示的文本(3)alertAction:右側(cè)按鈕文本(4)alertLaunchImage:進入程序時,啟動畫面的圖像名稱(5)applicationIconBadgeNumber:應(yīng)用圖標上標的數(shù)字(6)soundName:彈出通知時播放的聲音,是應(yīng)用內(nèi)部的資源文件。3.使用:[[UIApplication sharedApplication] scheduleLocalNotification:notification] 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎
總結(jié)
- 上一篇: [nginx报错]---unknown
- 下一篇: pc版android sd卡,告别瓶颈: