美文网首页
验证ios的通知机制是同步还是异步

验证ios的通知机制是同步还是异步

作者: HQFlying | 来源:发表于2017-03-08 14:27 被阅读170次

JavaScript中的事件机制不同,iOS里的事件广播机制是同步的,默认情况下,广播一个通知,会阻塞后面的代码:

-(void) click  
{  
    NSNotificationCenter *center =  [NSNotificationCenter defaultCenter];  
    [center postNotificationName:@"event_happend" object:self];  
          
    NSLog(@"HQ1111");  
} 

按下按钮后,发送一个广播,此前已经注册了2个此事件的侦听者

-(id) init  
{  
    self = [super init];  
    if(self){  
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(whenReceive:) name:@"event_happend" object:nil];  
    }  
    return self;  
}  
      
      
-(void) whenReceive:(NSNotification*) notification  
{  
    NSLog(@"HQ2222");  
}  
-(id) init  
{  
    self = [super init];  
    if(self){  
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(whenReceive:) name:@"event_happend" object:nil];  
    }  
    return self;  
}  
      
      
-(void) whenReceive:(NSNotification*) notification  
{  
    NSLog(@"HQ3333");  
}  

执行这段代码,首先会输出HQ2222,然后是HQ3333,最后才是HQ1111。调试发现,代码始终是跑在同一个线程中(广播事件的线程),广播事件之后的代码被阻塞,直到所有的侦听者都执行完响应

所以,由于NotificationCenter的这个特性,如果希望广播的事件异步处理,则需要在侦听者的方法里开启新线程。应该把Notification作为组件间解耦的方式,而不是利用它来实现异步处理。

相关文章

  • 验证ios的通知机制是同步还是异步

    与JavaScript中的事件机制不同,iOS里的事件广播机制是同步的,默认情况下,广播一个通知,会阻塞后面的代码...

  • Linux之IO模型机制

    同步和异步 同步和异步是用户线程与内核交互的方式,关注的是消息通知机制,是如何通知调用者. 同步: synchro...

  • iOS中通知异步?同步?

    让人很纳闷的一个问题:通知是同步的还是异步的 在iOS开发中有人问“通知是同步的还是异步的”。个人感觉问的这个问题...

  • iOS通知是异步还是同步

    答案: 同步 验证 运行结果2020-08-20 11:06:32.314535+0800 YaYa[19326:...

  • 同步、异步、阻塞与非阻塞

    同步与异步 首先来解释同步和异步的概念,这两个概念与消息的通知机制有关。也就是同步与异步主要是从消息通知机制角度来...

  • I/O模型笔记

    #0 同步异步、阻塞非阻塞 同步异步是从消息通知机制角度来说的 阻塞与非阻塞是从程序(线程)等待消息通知时的状态角...

  • JAVA语言系列:组合式异步编程

    1. 导论 同步API和异步API:同步/异步关注的是消息通知的机制。 同步:调用了某个方法,调用方在被调用方运行...

  • IO中同步、异步与阻塞、非阻塞的区别

    一、同步与异步 同步/异步他们是消息的通知机制。 1.概念解释 A、同步 所谓同步,就是在发出一个功能调用时,在没...

  • Nginx 学习笔记1--在web服务中的使用配置

    I/O模型: 阻塞型、非阻塞型、复用型、信号驱动型、异步 同步/异步:关注消息通知机制 消息通知:同步:等待对方返...

  • 通知是异步还是同步?

    是同步的, 当发出通知时,通知中心会等所有的接受者收并且处理完通知,再往下进行。 如何改成异步的? 1.接收通知接...

网友评论

      本文标题:验证ios的通知机制是同步还是异步

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