Swift3.0学习之GCD

  昨天开始学习了swift3.0这门语言,发现它和c、c++、Object-c、java有很多相同的地方,她很好地融入了以上4种语言,并且它可以用SQS来形容,simply、qucikly、stably,意思就是更简洁、更快、更稳定。
  但随着学习的深入,我觉得对swift3.0有些许不适应,体现在Object-C语言中的GCD,NSThread、NSOperation等线程通信。在Swift语言中对以上几种线程通信进行了重写,写法和以前完全不同。为了让读者更好地理解,我举了一个闭包回调+线程通信的例子,如下:

swift2.0写法

class HttpTool: NSObject {

    var callBack : (()->())?

    // 闭包的类型:(参数列表)->(返回值)
    // 建议:以后写闭包类型直接:()->()
    func requestData(callBack : ()->()) {

        self.callBack = callBack

        dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
            print("正在网络请求:\(NSThread.currentThread())")

            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                callBack()
            })
        }
    }
}

swift3.0写法

//在一个异步队列中读取数据, 然后再返回主线程更新 UI, 这种操作在新的 Swift 语法中是这样的
 DispatchQueue.global(qos: .background).async { [weak self]
        () -> Void in
        self?.flickrPhoto.loadLargeImage
            {
                loadedFlickrPhoto, error in
                if error != nil {
                    print("error:\(error)")
                } else {

        DispatchQueue.main.async {
            () -> Void in
            activityIndicator.removeFromSuperview()
            self?.imageView.image = self?.flickrPhoto.largeImage
                    }
                }
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值