美文网首页
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

相关文章

  • swift中GCD的使用详情

    想看swift3.0使用GCD,请点击GCD详解 想看swift3.0闭包的使用和介绍,请点击Swift版闭包使用...

  • swift3.0 GCD 笔记

    iOS 下的多线程编程技术从底层往上分别是 NSThread、NSOperation、Grand Central ...

  • iOS多线程-GCD(Swift)

    GCD准确的来讲应该叫做并发编程技术,因为swift3.0后GCD使用方式有很大的变化这里用Swift来重新整理一...

  • swift3.0 GCD

    随着苹果推出swift3.0,很多API都发生了变化,下面我就来总结下GCD的一些常用API用法。 首先为了方便先...

  • swift3.0 -- GCD

    1. 自己创建队列 2. 全局队列的一些说明 3. 获取一个队列 我们使用 DispatchQueue.globa...

  • Swift3.0之后GCD定时器如何创建

    Swift3.0很多语法都有变化,GCD的定时器也发生了变化 1.首先,创建定时器,和之前的有所不同,代码如下: ...

  • Swift3.0 中的GCD

  • swift3.0 GCD的使用

    取消过去的接口 说起 GCD, 大家肯定回想起类似 dispatch_async 这样的语法,这个语法在swift...

  • Swift3.0中的GCD

    swift 3中对C层级的GCD的API进行了彻头彻尾的改变。本文将从实际使用场景来了解一下新的api使用。 di...

  • Swift3.0中的 GCD之串行并行同步异步

    之前有写过关于 GCD的东西(地址),但是最近又把自己弄迷糊了.所以有在 swift3.0的语法下重新理解一下关于...

网友评论

      本文标题:swift3.0 GCD 笔记

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