美文网首页
NSNotification 同步、异步

NSNotification 同步、异步

作者: xiao蜗牛 | 来源:发表于2018-06-27 16:59 被阅读11次

    NSNotification 发通知的操作是同步的,并且通知处理是在发通知的那个线程

    如下面的操作:

    + (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...");
        });
    
    }
    
    // 这个通知回调方法是在线程 test_notifi_thread 处理的
    - (void)handleNotification:(NSNotification *)notification {
        NSLog(@"handle thread name: %@",[NSThread currentThread].name);
        NSLog(@"handle Notification...");
    }
    
    打印结果:
     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线程中发一条通知 (异步通知)
    2.postNotificationName这个方法没有立即返回,说明是同步的,它会执行完对应的回调的方法
    3.通知回调处理是在发通知的线程(test_nofifi_thread)里处理的
    4.postNotificationName这个方法实现,应该是在调用线程里去遍历所有的的NotificationName为Key的Observer列表,然后Observer调用对应注册的通知处理方法。

    相关文章

      网友评论

          本文标题:NSNotification 同步、异步

          本文链接:https://www.haomeiwen.com/subject/wpdmyftx.html