NSURLSession 使用心得

NSURLSession - 网络任务工具类

简介 : 
iOS 7.0 出的,用于替代 NSURLConnection (iOS 9.0 被废弃)
为HTTP数据传输提供一系列接口
支持后台运行的网络任务
暂停/停止/重启网络任务,不再需要NSOperation封装


作用 :

直接使用系统方法可以实现文件上传和下载(Block回调)

通过代理方法可以获取文件上传和下载进度(Delegate监听)

代理方法还可实现下载任务的断点续传


注意事项和使用方法 :

为了方便使用,苹果提供了一个全局 session (单例)

所有的 任务(Task) 都是由 session 发起

所有的任务默认是挂起的,需要 resume

要设置 Session 代理,需要自定义 Session 不能使用单例 Session


结构图 : (便于理解,蒙圈也可跳过)


方法 :

实例化方法

+ (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration  //参数1 - configuration : 配置

delegate:(nullable id <NSURLSessionDelegate>)delegate //参数2 - delegate : 设置代理

delegateQueue:(nullable NSOperationQueue *)queue; //参数3 - queue : 代理方法执行列队

启动任务方法

- (void)resume; //发起任务之后一定要用此方法开启任务

通过Request发起下载任务方法

- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request;

- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request 

completionHandler:(void (^)(NSURL * _Nullable location, 

NSURLResponse * _Nullable response, 

NSError * _Nullable error))completionHandler;

通过URL发起下载任务方法

- (NSURLSessionDownloadTask *)downloadTaskWithURL:(NSURL *)url;

- (NSURLSessionDownloadTask *)downloadTaskWithURL:(NSURL *)url 

completionHandler:(void (^)(NSURL * _Nullable location, 

NSURLResponse * _Nullable response, 

NSError * _Nullable error))completionHandler;

通过ResumeData发起下载任务

- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData;

- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData 

 completionHandler:(void (^)(NSURL * _Nullable location, 

 NSURLResponse * _Nullable response, 

 NSError * _Nullable error))completionHandler;


NSURLSessionDownloadDelegate方法 :

下载过程中调用

- (void)URLSession:(NSURLSession *)session  //参数1 - session : 调用的下载任务

downloadTask:(NSURLSessionDownloadTask *)downloadTask //参数2 - downloadTask : 下载的任务信息

                          didWriteData:(int64_t)bytesWritten //参数3 - bytesWritten : 本次下载的字节

                   totalBytesWritten:(int64_t)totalBytesWritten //参数4 - totalBytesWritten : 已下载的总字节

    totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite; //参数5 - totalBytesExpectedToWrite : 预计要下载的总字节

下载完成后调用

- (void)URLSession:(NSURLSession *)session  //参数1 - session : 调用的下载任务

downloadTask:(NSURLSessionDownloadTask *)downloadTask //参数2 - downloadTask : 下载的任务信息

 didFinishDownloadingToURL:(NSURL *)location; //参数3 - location : 下载完成后的文件路径信息


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值