(有码)NSURLSession
NSURLSession下载,默认将下载的任务保存在tmp下,如果回调方法什么都没做,tmp文件会自动删除
基础: 使用单例session
NSURL *url = [NSURL URLWithString:@"urlstring"];
//创建session
NSURLSession *session = [NSURLSession sharedSession];
//创建任务( 在子线程下载)
NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
//更新UI
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"数据请求完成更新UI");
});
}];
//默认不工作,要手动开启
[task resume];
代理:实现文件下载,不使用session,使用config
NSURL *url = [NSURL URLWithString:@"urlstring"];
//config可以配置全局的网络访问的参数
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
//创建session(指定回调方法的线程)不使用单例是防止多个程序都用那个单例session
NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:[[NSOperationQueue alloc] init]];
//发起并且继续任务
[[session downloadTaskWithURL:url] resume];
断点续传:
//开始下载
- (IBAction)start:(id)sender {
NSString *strUrl = @"http://www.33.la/uploads/20130523tpxh/6580.jpg";
NSURL *url = [NSURL URLWithString:strUrl];
self.downloadTask = [self.session downloadTaskWithURL:url];
[self.downloadTask resume];
}
- (IBAction)pause:(id)sender {
//暂停下载
[self.downloadTask cancelByProducingResumeData:^(NSData *resumeData) {
NSLog(@"%@暂停%tu",[NSThread currentThread],resumeData.length);
//保存下载数据
self.resumeData = resumeData;
self.downloadTask = nil;
}];
}
- (IBAction)continueDownload:(id)sender {
//防止多次点击
if (self.resumeData == nil) {
NSLog(@"没有续传的任务");
return;
}
//创建下载任务,使用上次下载的数据
self.downloadTask = [self.session downloadTaskWithResumeData:self.resumeData];
//开始任务
[self.downloadTask resume];
NSLog(@"+++++");
}
#pragma mark----代理方法
//下载完成
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location{
//下载完成,取消会话防止强引用
[self.session invalidateAndCancel];
self.session = nil;
self.downloadTask = nil;
}
//下载中...
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{
}
//断点续传的时候用
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes{
}
- (void)viewWillDisappear:(BOOL)animated{
//下载完成,取消会话防止强引用
[self.session invalidateAndCancel];
self.session = nil;
}
(有码)NSURLSession相关推荐
- (0044) iOS 开发之SDWebImage 深度学习其源码和原理
闲着没事看了SDWebImage的源码.清晰了它的原理. SDWebImage 深度学习 1.它是iOS图片加载框架 它支持从网络中下载且缓存图片,并设置图片到对应的UIImageView控件或者UI ...
- NSURLSession使用说明及后台工作流程分析
NSURLSession简介 NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnect ...
- iOS 仿看了吗应用、指南针测网速等常用工具、自定义弹出视图框架、图片裁剪、内容扩展等源码...
iOS精选源码 扩展内容的cell - folding-cell 一个近乎完整的可识别中国身份证信息的Demo 可自动快速... JPImageresizerView 仿微信的图片裁剪 带年月和至今以 ...
- IOS开发基础之NSURLSession的使用
IOS开发基础之NSURLSession的使用 服务器我们选用的是tomcat服务器. 所有项目info.plist加入 <key>NSAppTransportSecurity</k ...
- NSURLProtocol 拦截 NSURLSession 请求时body丢失问题解决方案探讨
摘要: "IP直连方案"主要在于解决DNS污染.省去DNS解析时间,通常情况下我们可以在项目中使用 NSURLProtocol 拦截 NSURLSession 请求,下面将支持 P ...
- AFNetworking源码学习
AFNetworking源码学习 简介 AFNetWorking是使用Objective-c开发iOS程序主流的网络请求开源库. AFNetworking组织结构 AFNetWorking主要分为5个 ...
- 阿里百川码力APP监控 来了!
阿里百川码力APP监控 来了! 这个APP监控 和手淘一起成长 历经千锤百炼 走过千BUG万坑 如今百川起产品 为了让你的APP更好 用户更爽! 在移动互联网时代,一款应用是否成功,用户体验是一个关键 ...
- iOS AFNetWorking源码详解(一)
来源:Yuzeyang 链接:http://zeeyang.com/2016/02/21/AFNetWorking-one/ 首先来介绍下AFNetWorking,官方介绍如下: AFNetworki ...
- iOS7 - NSURLSession
为什么80%的码农都做不了架构师?>>> 在iOS 7之前使用的网络服务是通过使用NSURLConnection中的全局状态来管理Cookie和身份验证,因此可能导致两个不同的 ...
最新文章
- HTML/CSS进阶
- Console.log对象显示
- Fatal error: Class 'ZipArchive' not found的解决办法
- (转)json+flexgrid+jbox组合运用页面刷新jsp
- 机器学习基础(二十九)—— 径向基核函数(RBF)
- 大数据可视化该如何实现
- [转] 雅虎团队:网站性能优化的35条黄金守则
- Java中的【锁】事 - 极客大学架构师训练营 架构师 Albert 分享
- java电子书下载网站
- informix php,连接到informix数据库 - PHP 方式
- ER Studio 直接导出sql建表
- 生物信息学:根据PDB名称、爬虫PDB数据库的信息、保存到Excel里
- 更改element-ui中MessageBox弹框的确定和取消位置
- 上传文件的几种主要方法。
- Android studio三周学习总结
- Linux系统查看有几块硬盘
- java中lock底层实现_Synchronized与Lock的底层实现解析
- 2021年茶艺师(中级)考试题及茶艺师(中级)模拟考试
- 如何把wma转换成mp3格式?三种方式任你使用
- 程序员为什么会越来越觉得前途很迷茫
热门文章
- 十分钟了解“微服务”
- 蝉妈妈发布孙一宁抖音直播数据:“想你的夜”涨粉200万
- C++接入CrashRpt并上报分析崩溃信息
- 2021年考思科认证CCIE还有必要吗
- html+css基础仏学习教程之HTML 中播放声音或者视频的方法有很多种。
- 计算机无法发现网络共享打印机,打印机网络共享,但是局域网内电脑无法连接。...
- 基于OpenAS2 V2.3.0的使用心得 二 之配置
- 验证码登录实战,http cookie,css-selector,runjs例子
- Java模拟新浪和腾迅自动登录并发送微博(2013年3月更新可用)
- 人工智能技术在智能音箱中的应用:智能语音识别与智能交互