zoukankan      html  css  js  c++  java
  • 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开始工作。

     

  • 相关阅读:
    memwatch内存泄露检测工具
    JavasSript实现秒转换为“天时分秒”控件和TDD测试方法应用
    字符编码转换笔记
    AjaxFileUpload 方法与原理分析
    Lua Rings库介绍
    Virtualbox+UbuntuServer+Xshell搭建Linux开发环境
    HTTP下载文件名称编码说明
    lua metatable 和 _index 实验
    前向后瞻正则表达式及其JS例子
    浏览器浏览记忆(history)几则技巧记录
  • 原文地址:https://www.cnblogs.com/ritian/p/5269237.html
Copyright © 2011-2022 走看看