Cocoa网络框架的未来:NSURLSession

Cocoa网络框架的未来:NSURLSession

NSURLConnection大概有10年的历史了,很多api的设计都比较陈旧,否则AFNetworking不会这么火。好在苹果在iOS 7/Mavericks 引入了新的网络类NSURLSession,用以替代NSURLConnection。

新的网络框架设计中,原有的NSURL/NSURLRequest/NSURLResponse这些类及相关概念都得以沿用;除了支持iOS 7的一新新特性(background download/upload),与AFNetworking 1.x很多api设计非常相似。

NSURLSession

  • Foundation中NSURLConnection的替代
  • 支持后台运行的网络任务
  • 暂停、停止、重启网络任务,不再需要NSOperation封装
  • 请求可以使用同样的配置容器中
  • 不同的session可以使用不同的私有存储
  • block和委托可以同时起作用
  • 直接从文件系统上传下载

NSURLSessionConfiguration

  • defaultSessionConfiguration - 缓存、cookie、证书全局非私有;近似于NSURLConnection
  • ephemeralSessionConfiguration - 缓存、cookie、证书全局私有但非持久化(in memory)
  • backgroundSessionConfiguration - 适合于应用被挂起或收到remote notification

NSURLSessionConfiguration的一些properties

摘录一些常用的:

  • HTTPAdditionalHeaders: HTTP协议头部信息
  • allowsCellularAccess/discretionary: 前者允许运营商网络/后者对于后台网络任务进行优化(有WiFi/设备电量情况好的时候)
  • timeoutIntervalForRequest/timeoutIntervalForResource: 前者每次有新data到达时重置;后者限制了整个资源请求时长,不要搞混了
  • HTTPMaximumConnectionsPerHost: 对于一个host的最大并发连接数

NSURLSessionTask

继承关系如图(image from objc.io)
NSURLSessionTask继承关系

  • 可以发送cancel/resume/suspend消息
  • NSURLSessionDataTask - 返回NSData
  • NSURLSesssionDownloadTask - 返回(临时)文件,下载进度可以恢复
  • NSURLSessionUploadTask - 上传NSData/File/Stream
  • Task默认都是挂起的,记得要向task发resume消息

最后附上NSURLConnection to NSURLSession delegate methods Mapping Table by Mattt Thompson

Reference:

附小广告一则:唱吧iOS团队诚招iOS工程师,推荐成功即奖励6000元现金或iPhone 6一部,详见这篇blog

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值