Swift3.0 中的GCD

//在viewDidLoad中实现
 //尾随闭包
        //如果函数最后一个参数是闭包,函数参数可以提前结束,最后一个参数直接使用 {} 包装闭包代码
        loadData { (result) in
            print("获取的数据: \(result)")
        }
        
//        //按照函数本身编写的结果
//        loadData(completion: { (result) -> () in
//            print(result)
//        })
        
        //尾随闭包
        DispatchQueue.global().async { 
            
            //嵌套的 gcd Xcode 不会改成尾随闭包
            DispatchQueue.main.async(execute: { 
                //可以将上面的 ' execute ' 和 ' ) '删了
                /*
                 DispatchQueue.main.async({
                 }
                */
            })
        }
//========下面实现loadData方法
     func loadData(completion:(result : [String] )->()) -> ( )
    {
        //将任务添加到队列,指令执行任务的函数
        //以 同步 / 异步 的方式来执行
        
        DispatchQueue.global().async { 
            print("耗时操作 \(Thread.current)")            //输出结果 : 耗时操作 <NSThread: 0x60000007c840>{number = 3, name = (null)}

            //休眠
            Thread.sleep(forTimeInterval:1.0)
            
            //获取结果
            let json = ["国内" , "国际" , "科技"]
            
            //主队列回调
            DispatchQueue.main.async(execute: { 
                print("主线程更新 UI \(Thread.current)")
                
                //回调 -> 执行 闭包(通过参数传递)
                completion(result: json)
                
            })
        }
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容