iOS —— NSURLSessionTask
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS —— NSURLSessionTask相关的知识,希望对你有一定的参考价值。
本章主要介绍抽象类 NSURLSessionTask 的一些基本属性和代理
一、NSURLSessionTask
1. NSURLSessionTask 是所有请求任务的基类,也是一个抽象类,所以不能通过它来创建具体的网络请求 task
2. 系统为每个 task 分配的唯一标识符
@property (readonly) NSUInteger taskIdentifier;
3. 当前 task 正在访问的请求对象
@property (nullable, readonly, copy) NSURLRequest *currentRequest;
4. 当前 task 上一个访问的请求对象
@property (nullable, readonly, copy) NSURLRequest *originalRequest;
5. 当前 task 的响应头信息
@property (nullable, readonly, copy) NSURLResponse *response;
6. 当前 task 已经接受的数据大小(单位为字节)
@property (readonly) int64_t countOfBytesReceived;
7. 当前 task 所要接受的数据总大小
@property (readonly) int64_t countOfBytesExpectedToReceive;
8. 当前 task 已经发送的数据大小
@property (readonly) int64_t countOfBytesSent;
9. 当前 task 所要发送的数据总大小
@property (readonly) int64_t countOfBytesExpectedToSend;
10. 设置 task 的描述信息
@property (nullable, copy) NSString *taskDescription;
11. 如果 task 请求失败时的错误信息
@property (nullable, readonly, copy) NSError *error;
12. 当前 task 的请求状态
@property (readonly) NSURLSessionTaskState state;
NSURLSessionTaskState 是一个枚举,如下
1 typedef NS_ENUM(NSInteger, NSURLSessionTaskState) { 2 NSURLSessionTaskStateRunning = 0, // 当前 task 正在接受数据 3 NSURLSessionTaskStateSuspended = 1, // 当前 task 被暂停 4 NSURLSessionTaskStateCanceling = 2, // 当前 task 被取消,会调用 NSURLSessionTaskDelegate 的 task:didCompleteWithError: 消息 5 NSURLSessionTaskStateCompleted = 3, // 当前 task 已经完成 6 } NS_ENUM_AVAILABLE(NSURLSESSION_AVAILABLE, 7_0);
13. 开始 task,所有 task 在创建后都要调用该方法才能开始请求
- (void)resume;
14. 暂停 task,会调用 NSURLSessionTaskDelegate 的 task:didCompleteWithError: 方法
- (void)cancel;
15. 暂停 task
- (void)suspend;
以上是关于iOS —— NSURLSessionTask的主要内容,如果未能解决你的问题,请参考以下文章
如何优雅地处理使用带有闭包的 NSURLSessionTask 的方法中的错误?
如果应用程序被杀死,NSURLSessionTask 会发生啥
NSURLSessionTask 创建在带有 backgroundSessionConfiguration 的扩展中失败