文档章节

Swift3 concurrency

cyper
 cyper
发布于 2016/10/27 18:49
字数 258
阅读 27
收藏 0

转自我的github: https://github.com/uniquejava/iOSConcurrencyDemo

swift3 concurrency

This repo is the steps breaking down from this excellent tutorial and an update for swift3 + xcode8. I seperated each step into its own commit, you can check the commit history for details.

The major difference is on GCD part, for NSOperation part, the changes are minor.

输入图片说明

A compact example

Example from here qos - new quality of service syntax

weak self - to disrupt retain cycles

async global background queue - for network query

async main queue - for touching the UI.

Of course you need to add some error checking to this...

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
          }
      }
  }
}

Swift2 GCD cheetsheet

输入图片说明

get main queue

swift2 version:

dispatch_get_main_queue()

swift3 version:

DispatchQueue.main    

global concurrent queue

swift2 version:

let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

swift3 version:

let queue = DispatchQueue.global(qos: .default) 

custom serial queue

swift2 version:

let queue = dispatch_queue_create("com.cyper.xxx", DISPATCH_QUEUE_SERIAL)

swift3 version:

let queue = DispatchQueue(label: "com.cyper.xxx")

DispatchQueue by default is serial queue, you don't have to specify it in the initializer.

custom concurrent queue

swift2 version:

let queue = dispatch_queue_create("com.cyper.xxx", DISPATCH_QUEUE_CONCURRENT)

swift3 version:

let queue = DispatchQueue(label: "com.cyper.xxx", qos: .userInitiated, attributes: .concurrent)

NSOperationQueue

  1. Removed the NS prefix
  2. Simplified the method name
  3. You can use xcode auto-fix

References

http://www.appcoda.com/ios-concurrency/

https://medium.com/swift-and-ios-writing/a-quick-look-at-gcd-and-swift-3-732bef6e1838#.ueryj2b2h

https://www.logcg.com/archives/2040.html

http://stackoverflow.com/questions/37805885/how-to-create-dispatch-queue-in-swift-3

Code

https://github.com/uniquejava/iOSConcurrencyDemo/blob/master/iOSConcurrencyDemo/ViewController.swift

© 著作权归作者所有

cyper

cyper

粉丝 59
博文 685
码字总数 143352
作品 0
武汉
前端工程师
私信 提问
AppCode 2016.3 EAP 发布,改进 Swift 解析性能

AppCode 2016.3 EAP 发布更新了,版本代号为 build 163.7743.19,该版本改进了 Swift 解析性能,Swift3 在调试器以及其他更多地方被支持。 其他更新: Swift3 的支持 与 Swift3 集合渲染相关...

局长
2016/11/11
1K
4
Facebook 针对 iOS 推出 Swift 开发者工具包

Swift3中文网消息,Facebook为iOS开发者推出了Swift开发者工具包(SDK),开发者可以通过Github链接下载https://github.com/facebook/facebook-sdk-swift。目前这一SDK基于Swift2,不过Faceboo...

研习君
2016/07/15
1K
2
Focus - 有些事情需要这份执着

Focus一次探索watchOS的实践。再次慨叹下Apple的审核速度,just one day... Focus - 有些事情需要这份执着 人这一辈子总有一些一定要去做必须要去体验的东西。 对于这些事物的追求需要这份执...

AliThink
2016/11/15
0
0
Xcode9和Swift4新特性

XCode9新特性 1. 支持远程调试 2. Xcode绑定Github账号 3. 支持Swift类重命名 4. Swift低版本兼容 5. Main Thread Checker 6. 模拟器支持多开 7. 标示功能 8. 协议自动补全 9. 代码段自动抽出...

LvesLi
2017/10/17
0
0
测试通过s3 api访问swift资源失败

通过devstack安装openstack,并部署了swift和swift3,在dashboard可以创建容器、上传下载文档。 然后通过openstack ec2 credentials create创建了admin用户的access key和secret key,无论是...

jameswangjz
2017/04/24
282
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊nacos的NacosDiscoveryAutoConfiguration

序 本文主要研究一下nacos的NacosDiscoveryAutoConfiguration NacosDiscoveryAutoConfiguration nacos-spring-boot-project/nacos-discovery-spring-boot-autoconfigure/src/main/java/com/a......

go4it
30分钟前
4
0
如何保证消息的顺序性?

面试题 如何保证消息的顺序性? 面试官心理分析 其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这是生产系统中常见的问题...

米兜
34分钟前
7
0
变量求解:RMT函数

1. RMT函数:计算贷款每月付款额 = PMT (贷款利率,付款限期,本金) 2.单变量求解: 数据选项卡----> 模拟分析------>单变量求解:单变量求解前必须先执行PMT函数...

东方墨天
36分钟前
2
2
网络安全市场需求

最近,网络安全技能差距的热门话题流传开来。技能差距经常被紧急讨论,可以看出它在实践中的作用是很大的。但信息安全是一门广泛的学科,所以在谈论“技能差距”时需要更具体。有专家表示,真...

linuxCool
55分钟前
3
0
饿了么快应用初体验

作者:饿了么 顾诚 为什么我们选择了快应用 在很长一段时间里,原生饿了么应用对于新用户来说体验成本略高,对于迫切想要点餐的老用户操作有点繁琐;而 Web 版的饿了么应用在体验、速度、功能...

前端老手
58分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部