NSURLSession简介

 

NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的。在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作。注意,如果用户强制将程序关闭,NSURLSession会断掉。

NSURLSession提供的功能:

  • 通过URL将数据下载到内存
  • 通过URL将数据下载到文件系统
  • 将数据上传到指定URL
  • 在后台完成上述功能

 

工作流程

如果我们需要利用NSURLSession进行数据传输我们需要:

  1. 创建一个NSURLSessionConfiguration,用于第二步创建NSSession时设置工作模式和网络设置:

工作模式分为:

  • 一般模式(default):工作模式类似于原来的NSURLConnection,可以使用缓存的Cache,Cookie,鉴权。
  • 及时模式(ephemeral):不使用缓存的Cache,Cookie,鉴权。
  • 后台模式(background):在后台完成上传下载,创建Configuration对象的时候需要给一个NSString的ID用于追踪完成工作的Session是哪一个(后面会讲到)。

网络设置:参考NSURLConnection中的设置项。

  1. 创建一个NSURLSession,系统提供了两个创建方法:

  • sessionWithConfiguration:
  • sessionWithConfiguration:delegate:delegateQueue:

    第一个粒度较低就是根据刚才创建的Configuration创建一个Session,系统默认创建一个新的OperationQueue处理Session的消息。

    第二个粒度比较高,可以设定回调的delegate(注意这个回调delegate会被强引用),并且可以设定delegate在哪个OperationQueue回调,如果我们将其设置为[NSOperationQueue mainQueue]就能在主线程进行回调非常的方便。

  2.创建一个NSURLRequest调用刚才的NSURLSession对象提供的Task函数,创建一个NSURLSessionTask。

  根据职能不同Task有三种子类:

  • NSURLSessionUploadTask:上传用的Task,传完以后不会再下载返回结果;
  • NSURLSessionDownloadTask:下载用的Task;
  • NSURLSessionDataTask:可以上传内容,上传完成后再进行下载。

  得到的Task,调用resume开始工作。

 

posted @ 2016-03-12 16:46  小眼奇遇记  阅读(174)  评论(0编辑  收藏  举报