• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MTNET: MTNET是一个十分轻量、功能强大的ios的http网络库

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

MTNET

开源软件地址:

https://gitee.com/gangwang/MTNET

开源软件介绍:

┌──┐┌──┐┌──┐┌──┐┌──┐││││└┐┌┘│┌┐││ ─┤└┐┌┘││││ ││ │││││ ─┤ ││ └┴┴┘ └┘ └┘└┘└──┘ └┘ 

                

MTNET

MTNET是一个十分轻量、功能强大的ios的http网络库,用来处理有大量很频繁发起http请求的场景,在已上架的数歀app使用中表现良好稳定。

其它的网络库上手容易,但要处理比较密集和较大文件下载时就显得比较麻烦。

使用下载池管理所有网络下载,可设置同时下载的请求数,针对单个请求可以中止和取消,提供两种数据接收方式:内存接收和磁盘接收。

磁盘接收数据会将接收到的数据小块小块的写入磁盘,避免了如果下载文件比较大时造成的内存吃紧

开发者可继承MTDownloadRecvDataFileSystem类,灵活指定下载文件的存储路径和存储文件名,并提供文件是否缓存和获取缓存文件的方法

已修改为 ARC 版本

~~~ 有很多同学反馈需要支持arc版本, 会尽快支持 ~~~# 使用引入头文件```objectivec#import "MTDownloaderHelper.h"#import "MTDownloadObjectModel.h"#import "MTDownloadRequest.h"#import "MTDownloadRecvData.h"	```声明下载池```objectivec@property (nonatomic, strong) MTDownloaderHelper * downloadHelper;	...	self.downloadHelper = [[MTDownloaderHelper alloc] init];	```设置下载池同时最多可执行的任务数```objectivec[self.downloadHelper setMaxConcurrentTaskCount:5];```可给下载池中所有链接指定同一个下载超时的设置```objectivec[self.downloadHelper setTimeout:20];```向下载池中投入一个下载请求```objectivecMTDownloadRequest * request = [[MTDownloadRequest alloc] init];MTDownloadObjectModel * downloadMdel = [[MTDownloadObjectModel alloc] init];downloadMdel.url = @"http://www.baidu.com";request.downloadModel = downloadMdel;    request.delegate  = self;    [self.downloadHelper addDownloadRequest:request];```取消一个下载请求,如此下载请求还未开始下载就从下载队列中移除。如已开始下开就中止当前下载```objectivec[self.downloadHelper cancelDownloadRequestByName:request.name];```使用`MTDownloadRequestDelegate` 获取下载结果```objectivec- (void) didTaskReceiveDataFinish   : (NSData *) theData    request:(MTDownloadRequest*) request{    NSLog(@"download ok");}- (void) taskDataDownloadFailed     : (NSError *) error     request:(MTDownloadRequest*) request{    NSLog(@"download failed:%@", error);}```###自定义接收下载规则可以继承`MTDownloadRecvDataFileSystem`自己制定下载规则,在此类中还提供了`processRecvAllDataFinish` 和 `processRecvAllDataFalied`这两个方法,重写就可以自定义处理当下载数据出错或者成功后的操作比如 下载数据出错后需要清理缓存,下载成功后需要对文件进行解压、压缩、图片缩放等```objectivec#import "MTDownloadRecvData.h"@interface AppImageDowloadRecv : MTDownloadRecvDataFileSystem- (void) setFileName:(NSString *) fileName;@end#import "AppImageDowloadRecv.h"#import "MTPath.h"#import "MTFile.h"#import "NSString+Extension.h"#import "mcfDef.h"@implementation AppImageDowloadRecv- (id) init{    self = [super init];    if(self)    {        self.localCacheDirPath = [MTPath Combine:kCache combinePath:@"appdata"];        static BOOL created = FALSE;        if (!created) {            created = TRUE;            [MTPath createDirectory:self.localCacheDirPath withAttributes:nil];        }    }        return self;}- (void) setFileName:(NSString *) fileName{    if ([NSString isNilOrEmpty:fileName])    {        return;    }        self.name = fileName;    self.localFullPath = [MTPath Combine:self.localCacheDirPath combinePath:fileName];}- (BOOL) bCached{    return [MTFile fileExistsAtPath:self.localFullPath];}- (NSData *) data{    if ([self bCached])    {        return [NSData dataWithContentsOfFile:self.localFullPath];    }        return nil;}@end```向下载池中投入一个自己定义下载规则的请求```objectivecMTDownloadRequest * request = [[MTDownloadRequest alloc] init];    MTDownloadObjectModel * downloadMdel = [[MTDownloadObjectModel alloc] init];downloadMdel.url = @"http://www.baidu.com";request.downloadModel = downloadMdel;    AppImageDowloadRecv * recvData = [[AppImageDowloadRecv alloc] init];[recvData setFileName:@"filename"];request.recvData = recvData;    request.delegate  = self;    [self.downloadHelper addDownloadRequest:request];```---If you like this project, give a start ;)---Using Mtnet in your App? Let me know [weibo](http://weibo.com/wgblog)  or [[email protected]]([email protected])  :).

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap