AFNetworking PHAsset  获取多个视频上传

使用Dispatch Semaphore
dispatch_semaphore_t 类似信号量,可以用来控制访问某一资源访问数量。
使用过程:

1 先创建一个Dispatch Semaphore对象,用整数值表示资源的可用数量
2 在每个任务中,调用dispatch_semaphore_wait来等待
3 获得资源就可以进行操作
4 操作完后调用dispatch_semaphore_signal来释放资源

dispatch_semaphore_create(0);
信号量为0则阻塞线程,大于0则不会阻塞。则我们通过改变信号量的值,来控制是否阻塞线程,从而达到线程同步。

for (int i = 0; i < array.count; i++) {
        
            PHAsset *asset = array[i];     
            PHVideoRequestOptions*option = [[PHVideoRequestOptions alloc]init];
            option.networkAccessAllowed = YES;
            __block NSData *resultData;
            dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
            
            [[PHImageManager defaultManager]requestAVAssetForVideo:asset options:option resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
                AVURLAsset* myAsset = (AVURLAsset*)asset;
                resultData = [NSData dataWithContentsOfURL:myAsset.URL];
                dispatch_semaphore_signal(semaphore);
                
            }];
            dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);

            [formData appendPartWithFileData:resultData name:@"" fileName:@"" mimeType:@""]; //
        
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2016年国庆假期终于把此书过完,整理笔记和体会于此。 关于书名 书名源于俄罗斯的演员斯坦尼斯拉夫斯基创作的《演员...
    李剑飞的简书阅读 7,321评论 2 65
  • 锁是一种同步机制,用于多线程环境中对资源访问的限制iOS中常见锁的性能对比图(摘自:ibireme): iOS锁的...
    LiLS阅读 1,564评论 0 6
  • Managing Units of Work(管理工作单位) 调度块允许您直接配置队列中各个工作单元的属性。它们还...
    edison0428阅读 8,073评论 0 1
  • 故事的开始总是这样 适逢其会 猝不及防 我想 每个人把自己那些有趣的故事记录下来,肯定会是一本很精彩的书。那 ...
    我正在输入_阅读 753评论 0 0
  • 于我而言,从小时候开始,爸爸就是一种很遥远的存在,爸爸工作的地方离家里很远,我对小时候的记忆很少,但记得很清...
    狗男养猫阅读 366评论 0 0