#import <Foundation/Foundation.h>
#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"]; }

ios中ASIHTTPRequst的封装的更多相关文章

  1. ios中tableview网封装(viewcontroller封装)常用的

    下载地址 http://pan.baidu.com/share/link?shareid=3657500168&uk=923776187 使用框架 1:asIHttpRequest库 2;SB ...

  2. iOS中 用FMDB封装一个SQLite数据库

    建立一个单例: DataBaseHandle.h #import <Foundation/Foundation.h> @class PersonModel; @class FMDataba ...

  3. QF——iOS中的数据库操作:SQLite数据库,第三方封装库FMDB,CoreData

    SQLite数据库: SQLite是轻量级的数据库,适合应用在移动设备和小型设备上,它的优点是轻量,可移植性强.但它的缺点是它的API是用C写的,不是面向对象的.整体来说,操作起来比较麻烦.所以,一般 ...

  4. 转载 -- iOS中SDK的简单封装与使用

    一.功能总述 在博客开始的第一部分,我们先来看一下我们最终要实现的效果.下图中所表述的就是我们今天博客中要做的事情,下方的App One和App Two都植入了我们将要封装的LoginSDK, 两个A ...

  5. iOS中数据库应用基础

    iOS 数据库入门 一.数据库简介 1.什么是数据库? 数据库(Database) 是按照数据结构来组织,存储和管理数据的仓库 数据库可以分为2大种类 关系型数据库(主流) PC端 Oracle My ...

  6. iOS 中的 HotFix 方案总结详解

    相信HotFix大家应该都很熟悉了,今天主要对于最近调研的一些方案做一些总结.iOS中的HotFix方案大致可以分为四种: WaxPatch(Alibaba) Dynamic Framework(Ap ...

  7. Quartz 2D在ios中的使用简述二:创建画布

    在iOS中使用Quartz画图时,第一步就是要获取画布(图形上下文),然后再画布上做各种操作.先看下CoreGraphics.h这个头文件,就可以知道能够创建多少种上下文类型. #include &l ...

  8. 谈谈iOS中的锁

    1 前言 近日工作不是太忙,刚好有时间了解一些其他东西,本来打算今天上午去体检,但是看看天气还是明天再去吧,也有很大一个原因:就是周六没有预约上!闲话少说,这里简单对锁来个简单介绍分享. 2 目录 第 ...

  9. iOS中的数据持久化方式

    iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...

随机推荐

  1. C# Newtonsoft.Json解析数组的小例子[转]

    https://blog.csdn.net/Sayesan/article/details/79756738 C# Newtonsoft.Json解析数组的小例子  http://www.cnblog ...

  2. 解决easyui combobox不能默认选中

    开始出现很奇怪的问题,ff没有问题IE8还是会出现不能选中默认项的问题,更改了select.input的方式,数据加载方式也更改为json的方式,未果,最后将datagrid toolbar的初始化放 ...

  3. protobuf Protocol Buffers 简介 案例 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  4. C# 二种方法控制系统音量/麦克风大小

    场景:在做播放设备的时候需要控制音量的大小,下面几种方法将满足你的要求 方法一: 改变系统音量设置 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...

  5. android动手写控件系列——老猪叫你写相机

    前记:Android这个开源而自由的系统,为我们带来开发便利,同时也埋下太多的深坑.例如调用系统自带的相机就会出现照片丢失,或者其他各种各样的问题.因此,看来自定义一个相机十分的必要. 要自定义相机我 ...

  6. walmart weekly sales

    最近参加了kaggle的walmart weekly sales 预测比赛,已经过期但还能提交获得评分.Walmart Recruiting - Store Sales Forecasting 提供的 ...

  7. JAVA 中不错的开源FTP组件:commons-net

    第一步:引入jar到pom.xml. <!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <dep ...

  8. 如何导入另一个 Git库到现有的Git库并保留提交记录

    问题描述: 我在本地有两个Git库项目(D1=PC项目 包含通用项目,D2=移动项目 也包含通用项目这两个项目在同一目录下),因为这两个项目使用的通用项目是一样的如数据库访问等   只有显示层(vie ...

  9. phpMyadmin安装极简教程[下载,解压,登录]

    1.下载一个压缩包,例如: 2. 解压到web根目录并重命名为phpmyadmin 3.在浏览器输入http://localhost/phpmyadmin就可以看到登陆界面了,登陆之后,数据库,表的增 ...

  10. 微软BI 之SSRS 系列 - 使用分组 Group 属性实现基于父子递归关系的汇总报表

    基于父子关系的递归结构在公司组织结构里比较常见,基本上都是在一张表里实现的自引用关系.在报表中如果要实现这种效果,并且在这个基础上做一些数据的汇总,可以使用到下面提到的方法. 要实现的效果大致如下 - ...