GCD之dispatch_semaphore_t的简单使用

在商城APP中,有些时候需要先处理图片上传。商品APP中,某个订单的立即评价,存在多个商品,一起评价。先将这多张图上传到服务器并返回图片对应的url,然后再把这些图片url和文字作为动态的属性发布到服务器。


IMG_3046.PNG
//创建信号量
 dispatch_semaphore_t sem = dispatch_semaphore_create(0);
//上传图片,网络请求的总数
 NSInteger commandCount = [self.model.list count];
 __block NSInteger httpFinishCount = 0;
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        for (goodsOrderModel *goodsOrder in self.model.list) {
            //是否有图片
            if (goodsOrder.selectedPhotos.count>0) {
                //上传图片,网络请求
                [self UploadPhotoFile:goodsOrder.selectedPhotos  block:^(BOOL isTrue) {
                    if (isTrue) {
                        NSLog(@"上传出错");
                    }else{
                        NSLog(@"上传成功");
                        ++httpFinishCount;
                    }
                    if (httpFinishCount == commandCount) {
                        //发送一个信号
                        dispatch_semaphore_signal(sem);
                    }
                }];
            }else{
                ++httpFinishCount;
                if (httpFinishCount == commandCount) {
                   //发送一个信号
                    dispatch_semaphore_signal(sem);
                }
            }
        }
        
        //等待信号
        dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
        dispatch_async(dispatch_get_main_queue(), ^{
            NSLog(@"所有图片上传后,其他操作");
        });
    });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在商城APP中,有些时候需要先处理图片上传。商品APP中,某个订单的立即评价,存在多个商品,一起评价。先将这多张图...
    灰色的恢阅读 231评论 0 0
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 16,399评论 4 61
  • 看见图片上的鹦鹉,不禁让我想起腾冲之行,想起那天的雨中漫步和顺古镇。 和顺古镇是云南的一座百年古村,原名“阳温墩”...
    蜜觅奇点阅读 503评论 0 3

友情链接更多精彩内容