美文网首页
iOS 转换异步block为同步方式运行

iOS 转换异步block为同步方式运行

作者: 无所不知的程序员 | 来源:发表于2017-02-13 17:01 被阅读0次

使用dispatch_semaphore_t

实现 dispatch_semaphore_t sema = dispatch_semaphore_create(0);

//创建信号量

__block ALAssetsGroup *ret = nil; ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop) { ret = group; dispatch_semaphore_signal(sema); //关键点,在此发送信号量 };

 ALAssetsLibraryAccessFailureBlock failureBlock = ^(NSError *error) { ret = nil; dispatch_semaphore_signal(sema); //关键点,失败时发送 };

NSUInteger groupTypes = ALAssetsGroupSavedPhotos;

[self.assetsLibrary enumerateGroupsWithTypes:groupTypes usingBlock:listGroupBlock failureBlock:failureBlock];

dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER); //关键点,在此等待信号量 return ret;

相关文章

  • iOS 转换异步block为同步方式运行

    在iOS5以后,许多API将只提供block版本,所以调用这些API就总是以异步方式运行的了。但有时候我们不想使用...

  • iOS 转换异步block为同步方式运行

    使用dispatch_semaphore_t 实现 dispatch_semaphore_t sema = dis...

  • GCD 入门

    同步,异步:同步是指:当一个 block 被添加到 queue 时,会阻塞当前运行的线程,直到 block 中的内...

  • iOS网络NSURLConnection和NSURLSessio

    HTTP通信过程 NSURLConnection发送网络请求 block 方式 发送同步请求发送同步请求 发送异步...

  • iOS-14 线程基础

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

  • RN与原生通信

    1.RCTResponseSenderBlock这个是一个 异步回调。 不是同步的。跟iOS block 不一样...

  • JavaScript 异步循环 - async/await 的使

    如何以顺序或并行方式运行异步循环? 在对循环进行异步处理之前,我想提醒您如何编写经典的同步循环。 同步循环 很久以...

  • dispatch queue.h

    版本:iOS13.5 queue.h dispatch其他文件通道 同步和异步的区别当运行到dispatch_as...

  • 前台数据传输

    数据提交 同步提交 方式一: 方式二: 方式三: 方式四: 异步提交 方式一: 方式二: 异步和&同步比较 for...

  • iOS多线程知识点梳理

    iOS多线程实现方式 pthread NSThread (三种方式创建) GCD 同步&异步针对的主体是任务,以t...

网友评论

      本文标题:iOS 转换异步block为同步方式运行

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