ios中ASIHTTPRequst的封装
#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的封装的更多相关文章
- ios中tableview网封装(viewcontroller封装)常用的
下载地址 http://pan.baidu.com/share/link?shareid=3657500168&uk=923776187 使用框架 1:asIHttpRequest库 2;SB ...
- iOS中 用FMDB封装一个SQLite数据库
建立一个单例: DataBaseHandle.h #import <Foundation/Foundation.h> @class PersonModel; @class FMDataba ...
- QF——iOS中的数据库操作:SQLite数据库,第三方封装库FMDB,CoreData
SQLite数据库: SQLite是轻量级的数据库,适合应用在移动设备和小型设备上,它的优点是轻量,可移植性强.但它的缺点是它的API是用C写的,不是面向对象的.整体来说,操作起来比较麻烦.所以,一般 ...
- 转载 -- iOS中SDK的简单封装与使用
一.功能总述 在博客开始的第一部分,我们先来看一下我们最终要实现的效果.下图中所表述的就是我们今天博客中要做的事情,下方的App One和App Two都植入了我们将要封装的LoginSDK, 两个A ...
- iOS中数据库应用基础
iOS 数据库入门 一.数据库简介 1.什么是数据库? 数据库(Database) 是按照数据结构来组织,存储和管理数据的仓库 数据库可以分为2大种类 关系型数据库(主流) PC端 Oracle My ...
- iOS 中的 HotFix 方案总结详解
相信HotFix大家应该都很熟悉了,今天主要对于最近调研的一些方案做一些总结.iOS中的HotFix方案大致可以分为四种: WaxPatch(Alibaba) Dynamic Framework(Ap ...
- Quartz 2D在ios中的使用简述二:创建画布
在iOS中使用Quartz画图时,第一步就是要获取画布(图形上下文),然后再画布上做各种操作.先看下CoreGraphics.h这个头文件,就可以知道能够创建多少种上下文类型. #include &l ...
- 谈谈iOS中的锁
1 前言 近日工作不是太忙,刚好有时间了解一些其他东西,本来打算今天上午去体检,但是看看天气还是明天再去吧,也有很大一个原因:就是周六没有预约上!闲话少说,这里简单对锁来个简单介绍分享. 2 目录 第 ...
- iOS中的数据持久化方式
iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...
随机推荐
- Poly2Tri介绍[转]
https://blog.csdn.net/xys206006/article/details/83002326 这是Poly2Tri介绍的翻译博文.原文链接:http://sites-final.u ...
- TRIZ系列-创新原理-13-反过来做原理
反过来做原理表述例如以下: 1)不直接接实施问题指出的动作,而是实施一个相反的动作;(比方用冷却取代加热等):2) 使物体或外部环境移动的部分精巧.或者使精巧的部分移动:3) 把物体上下颠倒.反过来做 ...
- 【ElasticSearch】ElasticSearch-SQL插件
ElasticSearch-SQL插件 image2017-10-27_11-10-53.png (1067×738) elastic SQL_百度搜索 Druid SQL 解析器的解析过程 - be ...
- Java归去来第3集:Eclipse中给动态模块升级
一.前言 如果还不了解剧情,请返回第2集的剧情 Java归去来第2集:利用Eclipse创建Maven Web项目 二.开始升级动态模块 2.1:查看原来的版本 我们先来看看Ecli ...
- The future of scripting in Unity
Recently we talked about Unity and WebGL . In that post we briefly spoke about how scripting works i ...
- TCP/IP具体解释学习笔记--TCP的超时与重传
1.基本概念 TCP之所以能够安全的将数据在传输中的安全性,是因为它每次给对方发送数据,都会等待对方给个确认,当长时间收不到这个确认,发送端就会重发这个数据. 2.超时时间的測量 要測超时时间,TCP ...
- javascript奇技淫巧之位运算符
奇技淫巧:指过于奇巧而无益还让人着迷的技艺与制品. And(与) & Or(或) | Exclusive Or(异或) 或者称 Xor ^ Not(非) ~ 位运算符,我们在日常js开发中其实 ...
- C#.NET常见问题(FAQ)-控制台程序如何做弹窗
最简单的弹窗,只要引用System.Windows.Forms,就可以使用WinForm的弹窗 如果要弹出是/否的选择对话框,则可以拷贝下面的代码 DialogResult dr = Messag ...
- file: /SourceCache/IOKitUser_Sim/IOKitUser-920.1.11/hid.subproj/IOHIDEventQueue.c, line: 512
//修改main.m 文件. typedef int (*PYStdWriter)(void *, const char *, int); static PYStdWriter _oldStdWrit ...
- LintCode: Combination Sum II
C++ DFS class Solution { public: void help(vector<int> &a, int now, int sum, int target, v ...