iOS Swift GCD-信号量

前言

先开个坑..慢慢更新...

Code

如果你有一个不知名的第三方库用block回调,你需要等他们都处理完了再执行你的方法,就用下面的方法

        // 存储图片data的数组
        var imageArr:Array<NSData> = []
        
        
        let globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
        // 创建信号量,初始化为0,碰到wait会停住,等有signal响应了才会执行下一步
        let semaphore =  dispatch_semaphore_create(0)
        
        // 开辟新线程
        dispatch_async(globalQueue, { () -> Void in
            // 遍历第三方model数组
            for i in 0..<modelAr.count {
                
                // 一些第三方需要的参数
                let model = modelAr[i]
                let options = PHImageRequestOptions()
                options.networkAccessAllowed = true
                
                
                // 取出图片的方法
                PhotoImageManager.sharedManager.requestImageDataForAsset(model.data!, options: options, resultHandler: { (data, dataUTI, oritation, info) -> Void in
                    if let data = data {
                        // 操作成功,取出data存到我要用的数组里
                        imageArr.append(data)
                        //加1,可以执行下一次for循环了
                        dispatch_semaphore_signal(semaphore)
                        
                    }
                })
                // 减一,挡住,等有signal时才会执行下一次for循环
                dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER)
            }
            
            
            // for循环里面的所有block都执行完了
            XTStatusCloud.shareSingleOne.saveNewStatus(dataArr: imageArr, context: text) { (success, error) in
                
            }
        })
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,650评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,301评论 4 61
  • #右脑开发之超级记忆力# 2017.9.3 14/21 【记忆百家姓前200个】 v记忆方法:数字编码法+故事联想...
    小精灵_Yori_d13a阅读 1,328评论 1 3
  • 想做一个简单的点餐系统。 用户分类:管理用户,顾客。 管理用户:服务员,经理,厨师。 用例:上传菜单,浏览菜单...
    mqddb阅读 503评论 0 0
  • 宏宏的小苹果楼主Lv1 两个男的,也就是你们想的那个上 内心仅存的理智告诉我用我爱豆镇楼比较酷 [张杰.jpg] ...
    罗刹寺修罗阅读 243评论 0 0