美文网首页
iOS异步变同步

iOS异步变同步

作者: wwwwwwdi | 来源:发表于2018-07-18 17:02 被阅读10次
        __block BOOL result = NO;
        //异步线程中操作是否完成
        __block BOOL inThreadOperationComplete = NO;
        [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
            if (settings.authorizationStatus == UNAuthorizationStatusDenied) {
                result = NO;
            }else if (settings.authorizationStatus == UNAuthorizationStatusNotDetermined) {
                result = NO;
            }else if (settings.authorizationStatus == UNAuthorizationStatusAuthorized) {
                result = YES;
            }else {
                result = NO;
            }
            inThreadOperationComplete = YES;
        }];
        
        while (!inThreadOperationComplete) {
            [NSThread sleepForTimeInterval:0];
        }
        return result;

另外一种写法:使用信号量

- (void)testDispatchSemaphore {
    NSLog(@"--------------------------begin-----------------");
    dispatch_semaphore_t sema = dispatch_semaphore_create(0);
    dispatch_queue_t que = dispatch_get_global_queue(0, 0);
    
    dispatch_async(que, ^{
        NSLog(@"--------------------------async begin-----------------");
        [NSThread sleepForTimeInterval:3];
        dispatch_semaphore_signal(sema);
        NSLog(@"--------------------------async complete-----------------");
    });
    
    
    dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
    NSLog(@"--------------------------complete-----------------");
    
}

--------------------------begin-----------------
--------------------------async begin-----------------
--------------------------async complete-----------------
--------------------------complete-----------------

相关文章

  • iOS异步变同步

    另外一种写法:使用信号量

  • IOS 异步变同步

    很多时候我们在通过方法获取某个属性的时候,会发现很多方法是异步的,block虽然好用,但是过多的嵌套难免会降低代码...

  • gennerator 函数

    模拟异步变同步

  • iOS-14 线程基础

    参考 ios的线程和同步异步操作 - 简书线程 同步异步 Timer 等使用 本文主要从 1、 ios三种创建方式...

  • iOS 多线程基础

    转自:iOS 多线程基础 - 简书 多线程同步和异步的区别?IOS中如何实现多线程的同步? 异步:可以同时执行多条...

  • iOS中的同步&异步 并行&串行

    以下是我个人对 iOS中的同步&异步 并行&串行 的理解,有不对的地方欢迎指正。 同步 异步 控制的是 “是否创建...

  • iOS 多线程基本概念

    iOS 多线程基本概念 容易混淆的几点 同步与异步 同步:不会开启新线程异步:可以开启新线程(但不代表一定会开启新...

  • iOS gcd看我就够了

    gcd是iOS中多线程的一种技术,下面我们来看看gcd的用法 同步&异步 同步 同步执行:字面意思,同步执行就是执...

  • UNIX 的5种IO模型介绍

    IO模型同步、异步、阻塞、非阻塞socket阻塞与非阻塞,同步与异步 同步和异步 同步/异步主要针对C端-同步就像...

  • 多线程

    iOS中的几种多线程GCD1、GCD分为任务和队列,任务(同步,异步)队列(串行,并发),同步串行,同步主队列的情...

网友评论

      本文标题:iOS异步变同步

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