博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios中ASIHTTPRequst的封装
阅读量:6813 次
发布时间:2019-06-26

本文共 2433 字,大约阅读时间需要 8 分钟。

#import 
#import "ASIHTTPRequest.h"#import "ASIDownloadCache.h"typedef void (^MyBlock)(UIImage *image);@interface AsyncDownLoading : NSObject+(id)ShareAsyncDownload;-(void)LoadImageWithUrl:(NSString *)url;@property(nonatomic,copy)MyBlock imageBlock;@end

#import "AsyncDownLoading.h"

 

 

 

@implementation AsyncDownLoading

 

 

 

+(id)ShareAsyncDownload{

 

    static dispatch_once_t onceToken;

 

    static AsyncDownLoading *downLoad=nil;

 

    dispatch_once(&onceToken, ^{

 

        downLoad=[[AsyncDownLoadingalloc] init];

 

    });

 

    return downLoad;

 

}

 

//暂时没有用

 

-(NSString *)cacheFileForImage:(NSString *)imageUrl{

 

    NSString *cacheFolder=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

 

    cacheFolder=[cacheFolder stringByAppendingPathComponent:@"imagecache"];

 

    NSFileManager *fmgr=[NSFileManagerdefaultManager];

 

    if (![fmgr fileExistsAtPath:cacheFolder]) {

 

        [fmgr createDirectoryAtPath:cacheFolder withIntermediateDirectories:YESattributes:nilerror:nil];

 

    }

 

    NSArray *paths=[imageUrl componentsSeparatedByString:@"/"];

 

   NSString *saveStr= [[paths lastObject] length]>0?[paths lastObject]:@"";

 

    return [NSString stringWithFormat:@"%@/%@",cacheFolder,saveStr];

 

    

 

}

 

 

 

-(void)LoadImageWithUrl:(NSString *)url{

 

    __block ASIHTTPRequest *Request=nil;

 

        if(url){

 

            Request=[ASIHTTPRequestrequestWithURL:[NSURLURLWithString:url]];

 

            [Request setDelegate: self];

 

        //设置下载缓存

 

        [Request setDownloadCache:[ASIDownloadCachesharedCache]];

 

        // 设置缓存策略

 

        [Request setCachePolicy:ASIOnlyLoadIfNotCachedCachePolicy];

 

        //设置指定存储方式

 

        [Request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];

 

 

 

        //在后台也运行

 

        [Request setShouldContinueWhenAppEntersBackground:YES];

 

        [Request setTimeOutSeconds:60];

 

 

 

        [Request setCompletionBlock:^{

 

        if([Request didUseCachedResponse]){

 

        NSLog(@"缓存");

 

        }

 

        else{

 

        NSLog(@"重新创建");

 

        }

 

            NSLog(@"--1--%@",[NSThreadcurrentThread]);

 

        UIImage *image=[UIImageimageWithData:[Request responseData]];

 

        self.imageBlock(image);

 

        }];

 

        [Request setFailedBlock:^{

 

 

 

        NSLog(@"请求失败error-->%@",Request.error.localizedDescription);

 

    

 

        }];

 

            [Request startAsynchronous];

 

}

 

}

 

-(void)dealloc

 

{

 

    Block_release(self.imageBlock);

 

    [super dealloc];

 

}

 

@end

 

 

 

- (IBAction)clicki2:(id)sender {    AsyncDownLoading *down=[AsyncDownLoading ShareAsyncDownload];    down.imageBlock=^(UIImage *image){        self.img1.image=image;    };    [down LoadImageWithUrl:@"http://h.hiphotos.baidu.com/album/w%3D2048/sign=45753fa7e850352ab1612208677bfaf2/2e2eb9389b504fc2aae48015e4dde71190ef6d62.jpg"];    }

 

转载地址:http://iczzl.baihongyu.com/

你可能感兴趣的文章
Flutter Engine线程管理与Dart Isolate机制
查看>>
美国泛达公司:下一代数据中心的光缆布线系统
查看>>
以太坊(ethereum)技术开发相关资料
查看>>
Pandas数据排序
查看>>
gulp常用插件
查看>>
2018 前端趋势:更一致,更简单
查看>>
SQL物化视图 自动更新 定时刷新
查看>>
express框架应用接入阿里云函数计算
查看>>
几行代码实现ofo首页小黄人眼睛加速感应转动
查看>>
317TABLE ACCESS BY INDEX ROWID BATCHED3
查看>>
MapReduce Shuffle原理 与 Spark Shuffle原理
查看>>
题解 P3386 【【模板】二分图匹配】
查看>>
李彦宏:人工智能的互联网时代已经到来
查看>>
游标概念和作用(转载)
查看>>
python中全局变量、局部变量、类变量、实例变量简析
查看>>
大众公布量子计算北京交通新一代产品亮相
查看>>
武器加持无人机,远程操控就可以抓获犯罪团伙
查看>>
MySQL数据库迁移
查看>>
IOS应用提交所需的ICON
查看>>
第90届中国电子展聚焦行业新热点,拉动产业链上下游快速发展
查看>>