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 会发生啥

如何防止恢复重复的 NSURLSessionTask

NSURLSessionTask 创建在带有 backgroundSessionConfiguration 的扩展中失败

如何处理完成处理程序块中取消的 NSURLSessionTask ?