美文网首页
iOS通知是异步还是同步

iOS通知是异步还是同步

作者: KB_MORE | 来源:发表于2020-08-20 11:21 被阅读0次

答案: 同步

验证
##监听者1
@implementation KBNotificationViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(log) name:noti object:nil];

}

//发送通知
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    [[NSNotificationCenter defaultCenter ] postNotificationName:noti object:nil];
  NSLog(@"已经发送通知");

}

- (void)log{
    for (int i = 0; i<100; i++) {
        NSLog(@"%d",i);
    }
}

###监听者2
@implementation KBMBProgressViewController
+ (void)load{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginfo) name:noti object:nil];
}
+ (void)loginfo{
    for (int i = 0; i<100; i++) {
        NSLog(@"通知通知");
    }
}

运行结果
2020-08-20 11:06:32.314535+0800 YaYa[19326:473375] 通知通知
2020-08-20 11:06:32.314787+0800 YaYa[19326:473375] 通知通知
2020-08-20 11:06:32.315030+0800 YaYa[19326:473375] 通知通知
..............
2020-08-20 11:06:32.315269+0800 YaYa[19326:473375] 0
2020-08-20 11:06:32.315538+0800 YaYa[19326:473375] 1
...........
2020-08-20 11:06:32.316578+0800 YaYa[19326:473375] 99
2020-08-20 11:16:32.892943+0800 YaYa[19454:479703] 已经发送通知

中间for循环耗时操作, 最后输入 已经发送通知 可见等待监听者执行完说有方法之后才进行发送通知后续代码, 即说明通知是同步的

改变通知发送执行为异步

一 、GCD

  dispatch_async(dispatch_get_global_queue(0, 0), ^{
       [[NSNotificationCenter defaultCenter ] postNotificationName:noti object:nil];
  });
  NSLog(@"已经发送通知");

二、NSNotificationQueue

    NSNotificationQueue *queue = [[NSNotificationQueue alloc]initWithNotificationCenter:[NSNotificationCenter defaultCenter]];
    NSNotification *notify = [[NSNotification alloc]initWithName:noti object:nil userInfo:nil];
    [queue enqueueNotification:notify postingStyle:NSPostASAP];
  NSLog(@"已经发送通知");

相关文章

  • iOS通知是异步还是同步

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

  • iOS中通知异步?同步?

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

  • 通知是异步还是同步?

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

  • #通知是异步还是同步

    通过这里的时间间隔可以看出,在抛出通知以后,观察者在通知事件处理完成以后(这里我们休眠3秒),抛出者才会往下继续执...

  • Paper Collection - NSNotifi

    通知是同步还是异步? 通知详解(关于移除和重复添加)

  • NSNotification通知是同步还是异步?

    相信小伙伴们平时没怎么注意过通知是同步还是异步,直到在面试的时候被面试官问的一脸懵逼,才开始思考,yes or n...

  • NSNotification是同步还是异步?和delegate相

    1、NSNotification是同步还是异步?默认情况下,创建的NSNotification是同步的,发布通知 ...

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

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

  • iOS同步通知和异步通知

    NSNotification 是iOS中一个调度消息通知的类,采用单例模式设计,在程序中实现传值和回调. 一. 和...

  • Linux之IO模型机制

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

网友评论

      本文标题:iOS通知是异步还是同步

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