美文网首页
AFNetworking PHAsset  获取多个视频上传

AFNetworking PHAsset  获取多个视频上传

作者: ping_oO | 来源:发表于2017-05-29 20:47 被阅读167次

    使用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:@""]; //
            
        }

    相关文章

      网友评论

          本文标题:AFNetworking PHAsset  获取多个视频上传

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