iOS 开发者必须掌握的 URLSession 使用指南

URLSession 是 Apple 提供的用于处理 HTTP/HTTPS 请求的 API。它支持多种网络任务,包括: + 数据任务(Data tasks):发送和接收数据,如 GET 或 POST 请求。 + 下载任务(Download tasks):下载文件。 + 上传任务(Upload tasks):上传文件。 + 流任务(Stream tasks):处理流数据。 URLSession 提供了同步和异步两种方式来处理网络请求,并支持后台传输、取消和恢复传输等高级功能。 URLSession 实例有两种方法: + URLSession.shared:大多数情况直接使用这个共享的单例就行了。 + URLSession(configuration: URLSessionConfiguration):自定义配置的 URLSession,如果你有特殊需求,可以使用这个方法创建一个新的 URLSession。 URLSessionConfiguration 是 URLSession 的配置类,用于配置 URLSession 的行为,比如超时时间、缓存策略、代理设置等等。 Data tasks 是 URLSession 的一种任务类型,用于发送和接收数据。我们可以通过 URLSession 的 dataTask(with:completionHandler:) 方法创建一个请求任务,然后通过 resume() 方法启动任务。 Upload tasks 是 URLSession 的另一种任务类型,可以轻松用它来上传文件。 我们可以通过 URLSession 的 uploadTask(with:from:completionHandler:) 方法创建一个上传任务,然后通过 resume() 方法启动任务。 Download tasks 是 URLSession 用它来下载文件的,当你要下载一个文件时可以使用,它允许你将文件下载并保存到本地。 我们可以通过 URLSession 的 downloadTask(with:completionHandler:) 方法创建一个下载任务,然后通过 resume() 方法启动任务。 会话是 URLSession 的核心,它负责处理所有的网络请求,除了上边用到的以下方法。 以下是一些会话常用的方法: + invalidateAndCancel():取消所有任务并使会话无效。 + finishTasksAndInvalidate():等待所有任务完成后使会话无效。 + getAllTasks(completionHandler:):获取所有任务。 + flush(completionHandler:):清空缓存。 + reset(completionHandler:):重置整个会话。 每个任务都有自己的生命周期,URLSession 提供了一些方法来管理任务的生命周期: + resume():启动任务,上边的代码中都有用到。 + suspend():暂停任务,暂停后可以通过 resume() 方法重新启动。 + cancel():取消任务,取消后无法恢复,比如当用户离开这个页面的时候,可以把当前页面的网络请求取消,避免资源浪费。
我的笔记