NSNotification 同步、異步

NSNotification 發(fā)通知的操作是同步的,并且通知處理是在發(fā)通知的那個線程

如下面的操作:

+ (void)postNotificationAsy {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        [[NSThread currentThread] setName:@"test_notifi_thread"];
        NSLog(@"begin post notification....");
        [[NSNotificationCenter defaultCenter] postNotificationName:testNotification object:nil];
        NSLog(@"post notificaition finished...");
    });

}

// 這個通知回調(diào)方法是在線程 test_notifi_thread 處理的
- (void)handleNotification:(NSNotification *)notification {
    NSLog(@"handle thread name: %@",[NSThread currentThread].name);
    NSLog(@"handle Notification...");
}

打印結(jié)果:
 ThreadTest[5103:76211] begin post notification....
 ThreadTest[5238:83489] handle thread name: test_notifi_thread
 ThreadTest[5103:76211] handle Notification...
 ThreadTest[5103:76211] post notificaition finished...

1.在test_nofifi_thread線程中發(fā)一條通知 (異步通知)
2.postNotificationName這個方法沒有立即返回,說明是同步的,它會執(zhí)行完對應(yīng)的回調(diào)的方法
3.通知回調(diào)處理是在發(fā)通知的線程(test_nofifi_thread)里處理的
4.postNotificationName這個方法實現(xiàn),應(yīng)該是在調(diào)用線程里去遍歷所有的的NotificationName為Key的Observer列表,然后Observer調(diào)用對應(yīng)注冊的通知處理方法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 近期接觸項目中用的通知比較多,對于通知有一個系統(tǒng)的理解與學(xué)習(xí),已下是做的一些總結(jié) 先來看看官方的文檔,是這樣寫的:...
    9de75b652cd9閱讀 682評論 0 0
  • NSNotificationCenter對象(通知中心)提供了在程序中廣播消息的機制,它實質(zhì)上就是一個通知分發(fā)表。...
    9de75b652cd9閱讀 799評論 0 1
  • 轉(zhuǎn)載自南峰子的技術(shù)博客 一個NSNotificationCenter對象(通知中心)提供了在程序中廣播消息的機制,...
    我消失1314閱讀 967評論 0 2
  • 本文主要講了java中多線程的使用方法、線程同步、線程數(shù)據(jù)傳遞、線程狀態(tài)及相應(yīng)的一些線程函數(shù)用法、概述等。 首先講...
    李欣陽閱讀 2,597評論 1 15
  • 一個NSNotificationCenter對象(通知中心)提供了在程序中廣播消息測機制,它實質(zhì)上就是一個通知分發(fā)...
    DomAndMona閱讀 853評論 0 2

友情鏈接更多精彩內(nèi)容