新建继承NSObject类Downloader
Downloader.h代码

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>//@class Downloader;typedef void(^Success)(NSMutableData *data,NSString *name);
typedef void(^Failure)(NSError *error);@protocol ProGress <NSObject>-(void)postPro:(CGFloat)pro;//代理实现进度传递@end@interface Downloader : NSObject <NSURLConnectionDataDelegate>
{long long _length;//文件大小NSMutableData *_datas;long long _currenLenght;//当前下载的文件大小}@property (nonatomic, assign) long long length;
@property (nonatomic, strong) NSMutableData *datas;
@property (nonatomic, copy) Success success;
@property (nonatomic, copy) Failure failure;@property (nonatomic, strong) NSString *strURL;
@property (nonatomic,strong)NSString *fileName;@property (nonatomic,assign)id<ProGress>proDelegate;- (void)asynchronousDownload:(NSString *)url failure:(Failure)failure;@end

Downloader.m代码

//
//  Downloader.m
//  QNNSEC
//
//  Created by chenp on 16/5/25.
//  Copyright © 2016年 chenp. All rights reserved.
//#import "Downloader.h"@implementation Downloader- (void)asynchronousDownload:(NSString *)strURL
{_currenLenght=0;self.strURL = strURL;NSURL *url = [NSURL URLWithString:[strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];[NSURLConnection connectionWithRequest:request delegate:self];
}- (void)asynchronousDownload:(NSString *)url failure:(Failure)failure
{self.failure = failure;[self asynchronousDownload:url];
}- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{_length = response.expectedContentLength;_datas = [NSMutableData dataWithCapacity:_length];self.fileName= [response suggestedFilename];
}- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{_currenLenght+=data.length;[self.datas appendData:data];if (self.proDelegate && [self.proDelegate conformsToProtocol:@protocol(ProGress)]) {[self.proDelegate postPro:(CGFloat)_currenLenght/(CGFloat)_length];}
}- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{NSLog(@"--->> Downloader 下载完成");self.success(self.datas,self.fileName);
}- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{self.failure(error);
}@end

iOS开发(OC)——iOS原生API实现文件下载相关推荐

  1. ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 ios开发雷达扫描的动画效果

    ios开发oc高仿京东金融白条额度余额的   ios开发水波纹   ios开发水正弦曲线波纹 直接上代码,复制粘贴就可以 vc里的 WaterRippleView *topView = [[Water ...

  2. ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 ios开发雷达扫描的动画效果...

    ios开发oc高仿京东金融白条额度余额的   ios开发水波纹   ios开发水正弦曲线波纹 直接上代码,复制粘贴就可以 vc里的 WaterRippleView *topView = [[Water ...

  3. 玩转iOS开发:iOS 11 新特性《UIKit新特性的基本认识》

    文章分享至我的个人技术博客: https://cainluo.github.io/15099354591154.html 前两篇, 我们讲了Xcode 9的一些新特性, 可以更加方便我们去写" ...

  4. IOS开发系列--IOS程序开发概览

    IOS开发系列--IOS程序开发概览 2014-08-04 19:42 by KenshinCui, 9983 阅读, 51 评论, 收藏, 编辑 概览 终于到了真正接触IOS应用程序的时刻了,之前我 ...

  5. iOS开发系列--IOS程序开发概览ios基础

    iOS开发系列--IOS程序开发概览 概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的I ...

  6. iOS开发系列--iOS应用架构谈

    转自:Casa Taloyum 目录 iOS应用架构谈 (一)开篇 iOS应用架构谈 (二)view层的组织和调用方案 iOS应用架构谈 (三)网络层设计方案 iOS应用架构谈 (四)动态部署方案 i ...

  7. iOS开发笔记--iOS应用架构谈 view层的组织和调用方案

    前言 <iOS应用架构谈 开篇>出来之后,很多人来催我赶紧出第二篇.这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分. 现在好啦,第二 ...

  8. [IOS开发教程] ios开发培训:浅析最方便的iOS开发环境

    RIA视频教程">摘要:移动 开发也称作手机开发,现阶段比较主流的移动开发平台主要是IOS, 安卓, WP8 等,那么我们今天的ios开发学习就针对ios开发环境来简单阐述一些观点. ...

  9. 从今天开始学习iOS开发(iOS 7版)-- 概论 (一)

    <Start Developing iOS Apps Today>为iOS开发提供了完美的起点.你可以在Mac上创建运行在iPad,iPhone和iPod touch上的iOS app.查 ...

  10. iOS开发 - 中文 iOS/Mac 开发博客列表

    博客地址 RSS地址 OneV's Den http://onevcat.com/atom.xml 破船之家 http://beyondvincent.com/atom.xml NSHipster h ...

最新文章

  1. R语言使用caret包对GBM模型自定义参数调优:自定义优化参数网格、可视化核心参数与评估指标关系、Accuracy与树的深度、个数的关系、Kappa与树的深度、个数的关系
  2. Android应用程序键盘(Keyboard)消息处理机制分析(20)
  3. 如何保护自己的android app
  4. 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 序列化 | Protobuf 反序列化 )
  5. Python学习---django知识补充之CBV
  6. 【计算机网络复习 数据链路层】3.4.4 选择重传协议(SR)
  7. Spring MVC中@Controller和@RequestMapping注解详解
  8. SAP License:SAP不便解决的问题之六——采购组在审批策略中的作用
  9. 数学文化 剩余定理
  10. oracle附加数据库拒绝访问,Windows 添加任务计划报“0x80070005: 拒绝访问”的解决...
  11. FreeBSD磁盘标签实例分析
  12. 根据UE4官方文档实现一个FPS游戏
  13. Java运行环境下载
  14. 计算机学硕编码,怎么区分学硕和专硕代码
  15. lncRNA数据分析专题
  16. python爬虫爬取steam,epic,origin平台游戏数据
  17. 使用XPath的爬虫
  18. python数据分析与可视化【一】python基础实例
  19. 计算机教室管理使用标准,计算机教室管理标准制度.doc
  20. 网络编程 网络地址点分十进制和二进制之间的转换

热门文章

  1. 浅尝超融合之Nutanix(下)安装篇
  2. Android—百度地图的简单使用
  3. ubuntu18.04.3安装和卸载Adobe Reader 9
  4. bxp读写分离怎么设置(转)
  5. 操作系统NACHOS实验(二)具有优先级的线程调度
  6. pygame五子棋人机游戏
  7. 戏谈汉语英语比较(转贴)
  8. CAN转Modbus网关助力柴油机节能减排
  9. [推荐] 一个android个人开发者的总结[问题点数:40分]
  10. 波士顿房价数据集.csv