NSURLSession类和其相关的类提供了通过HTTP下载内容的API。该API提供了丰富的代理方法以支持身份认证,以及让我们app在没有运行的情况下(在iOS中程序处于暂停状态)执行后台下载操作。Suspended(暂停)是指应用处于后台且停止执行代码,但是应用依然是在内存中。

在使用NSURLSession的API时,我们的app可能会创建一系列的session(会话,在后面的文章中统一使用“session”,而不使用“会话”),每个session协调一组与之相关的数据传输任务。例如,如果在编写一个Web浏览器时,应用程序会在每个选项卡或窗口中创建一个session。在每个session中,我们的app会添加一个甚至多个任务,每一个任务都代表一个特定URL的请求(如果一个原始的URL返回的是HTTP重定向,则表示后续的URL)。

就像大部分的网络API,NSURLSession API是高度异步的。如果我们使用的是默认的,系统提供的代理,我们必须要提供一个completion的回调,以便我们在传输完成时,获取请求成功或者请求出现错误的数据。另外,如果我们提供了自定义的代理对象,这些任务对象会在收到服务器数据之后(或者是文件下载,在下载完成时)调用代理的相关方法。

提示

completion的回调主要是作为自定义代理的一个替代方法,如果我们在创建一个任务时传递了一个completion的回调,那么响应的代理方法和数据传递并不会被调用。

NSURLSession API除了向代理提供信息外,还提供了(请求)状态和进度的属性。它支持取消,重启(继续)和暂停任务

results matching ""

    No results matching ""