美文网首页
swift3.0 GCD 笔记

swift3.0 GCD 笔记

作者: 俊瑶先森 | 来源:发表于2016-09-27 14:04 被阅读110次

    iOS 下的多线程编程技术从底层往上分别是 NSThread、NSOperation、Grand Central Dispatch(GCD),这三个技术越往后抽象度越高,使用也越简单。GCD 无论在 Objective-C 时代,还是后 OC 的 Swift 时代,都是 iOS 开发者使用最多的多线程编程技术。

    GCD 是使用 C 语言编写的。多年以来,一直使用 Objective-C 的开发者们很习惯 GCD 的底层 C 语言式的代码。这种风格一直保留到 Swift 推出两年后,到了 Swift 2 。无论 Swift 迭代了多少回,GCD 依然保留其原始的 C-Style。终于,到了 2016 年,全力研发 Swift 的苹果终于想起了 GCD 这么个东西,在 WWDC 2016 推出的 Swift 3 中完全更改了 GCD 的代码风格。

    在 Swift < 3 中,我们写一个 GCD 代码可能是这样的:

    
    let queue = dispatch_queue_create("Kenneth", nil)
    dispatch_async(queue) { 
        print("Hello World")
    }
    
    

    我们创建一个串行队列,然后指派一个输出 Hello World 的异步任务给这个队列,一切看上去都很自然。然而唯一的缺点就是,这太不 Swift 了。
    我们再看看 Swift 3 中,上面的代码是如何写的:

    let queue = DispatchQueue(label: "Kenneth")
    queue.async { 
      print("Hello World")
    }
    
    模版:
    全局队列异步
    DispatchQueue.global().async {
        //Something that wastes time
        DispatchQueue.main.async {
        //返回主线程
        }
    }
    
    延时操作,注意这里的单位是秒
    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3.5) {
        // 你想做啥
    }
    
    创建队列同步
    let queue = DispatchQueue(label: "Kenneth")
    queue.sync {
        print("Hello World")
    }
    

    http://www.jianshu.com/p/f042432e2d7d

    相关文章

      网友评论

          本文标题:swift3.0 GCD 笔记

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