使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
源码:http://files.cnblogs.com/ios8/ASIHttpRequestDemo2.zip
NSURL *url = [NSURLURLWithString:@"http://pica.nipic.com/2007-12-12/20071212235955316_2.jpg"];
ASIFormDataRequest *request = [ASIFormDataRequestrequestWithURL:url];//创建数据请求对象
[request setRequestMethod:@"GET"];
[request setTimeOutSeconds:60];
// [request setDelegate:self];//设置代理
// 设置缓存--
ASIDownloadCache *cache = [[ASIDownloadCachealloc]init];//创建缓存对象
NSString *cachePath = [NSHomeDirectory()stringByAppendingPathComponent:@"Documents"]; //设置缓存目录,这里设置沙盒目录下的Documents目录作为缓存目录
NSLog(@"cachepath:%@",cachePath);
[cache setStoragePath:cachePath];
cache.defaultCachePolicy =ASIOnlyLoadIfNotCachedCachePolicy; //设置缓存策略
//每次请求会将上一次的请求缓存文件清除
// request.cacheStoragePolicy = ASICacheForSessionDurationCacheStoragePolicy;
//持久缓存,一直保存在本地(是持久缓存,程序下次启动,缓存仍然还在)
request.cacheStoragePolicy =ASICachePermanentlyCacheStoragePolicy;
request.downloadCache = cache;
[request startAsynchronous];//发送异步请求
//设置网络请求完成后调用的block
[request setCompletionBlock:^{
// NSLog(@"%@",request.responseHeaders);
NSData *data = request.responseData;
self.showImageView.image = [UIImageimageWithData:data];
//---------------判断数据的来源:网络 or缓存------------------
if (request.didUseCachedResponse) {
NSLog(@"数据来自缓存");
} else {
NSLog(@"数据来自网络");
}
}];
//请求失败调用的block
[request setFailedBlock:^{
NSError *error = request.error;
NSLog(@"请求网络出错:%@",error);
}];
在 NSData *data = request.responseData;这一行报警告:::Capturing \'request\'
strongly in this block is likely to lead to a retain cycle..........
先开始我想应该是内存管理的问题,后来想自己使用了arc应该不存在这个问题吧。。后
来朋友说,block里面不能使用自己自定义的属性,因为block是独立的。。网上查了一下
关于block的使用问题,看的懵懵懂懂不太明白,没有理解。。。。没有明白。。这个和
我的程序死掉有什么关系??我写的代码,
照点击打开链接这个网站的写的......
嗯,现在我把设置缓存的代码注释掉了,程序就可以了。。。这个跟缓存有关么?
ViewController.m
@interface ViewController (){
ASIDownloadCache *myCache;
}
// 设置缓存--
ASIDownloadCache *cache = [[ASIDownloadCachealloc]init];//创建缓存对象
myCache = cache;
//路径
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentDirectory = [pathsobjectAtIndex:0];
NSLog(@"path-%@",documentDirectory);
//设置缓存存放路径
[myCachesetStoragePath:[documentDirectorystringByAppendingPathComponent:@"pic"]];
myCache.defaultCachePolicy =ASIOnlyLoadIfNotCachedCachePolicy; //设置缓存策略
//每次请求会将上一次的请求缓存文件清除
// request.cacheStoragePolicy = ASICacheForSessionDurationCacheStoragePolicy;
//持久缓存,一直保存在本地(是持久缓存,程序下次启动,缓存仍然还在)
request.cacheStoragePolicy =ASICachePermanentlyCacheStoragePolicy;
request.downloadCache = cache;
-----------------
打印了路径,前往文件夹,输入路径,就的到以下图示:
使用ASIHTTPRequest和ASIDownloadCache实现本地缓存的更多相关文章
- HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)
1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息. 但是c ...
- 微信小程序之本地缓存(十)
[未经作者本人同意,请勿以任何形式转载] 目前,微信给每个小程序提供了10M的本地缓存空间(哎哟妈呀好大) 有了本地缓存,你的小程序可以做到: 离线应用(已测试在无网络的情况下,可以操作缓存数据) 流 ...
- HTML5本地缓存数据
//HTML5本地缓存数据 function putObj(key, data) { if (!!window.localStorage) { var obj = { "key": ...
- iOS //清除本地缓存
//清除本地缓存 -(void)clearCache{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT ...
- Java8简单的本地缓存实现
原文出处:lukaseder Java8简单的本地缓存实现 这里我将会给大家演示用ConcurrentHashMap类和lambda表达式实现一个本地缓存.因为Map有一个新的方法,在 ...
- Java学习之ConcurrentHashMap实现一个本地缓存
ConcurrentHashMap融合了Hashtable和HashMap二者的优势. Hashtable是做了线程同步,HashMap未考虑同步.所以HashMap在单线程下效率较高,Hashtab ...
- iOS五种本地缓存数据方式
iOS五种本地缓存数据方式 iOS本地缓存数据方式有五种:前言 1.直接写文件方式:可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据 ...
- OutputCache 如何使用本地缓存 【转】
注意!ASP.NET MVC 3 的一个 OutputCache 问题 在用 ASP.NET MVC 3 重写博客园网站首页时,特地留意了一下这个缓存问题,通过这篇博文分享一下. 在 ASP.NE ...
- 如何查看与刷新DNS本地缓存
如何查看与刷新DNS本地缓存 一.查看DNS本地缓存 在cmd窗口输入:ipconfig/displaydns 二.刷新DNS本地缓存 在cmd窗口输入:ipconfig/flushdns 之后输入: ...
随机推荐
- 〖Linux〗秒开www.stackoverflow.com,非代理方式
stackoverflow.com就不介绍了,一种解决方法就是手动分析链接,使用nslookup得到hosts: #stack overflow 198.252.206.140 cdn.sstatic ...
- 关于RSA加密算法的工具类
关于RSA加密算法的工具类 最近在捣鼓SSO(单点登录),就是一个在应用(系统)登录之后,当切换其他应用(系统)的时候,可以省去登录,提高用户的使用的便捷.(具体有时间在写) 期间涉及的安全问题,发送 ...
- Java通过mysql-connector-java-8.0.11连接MySQL Server 8.0遇到的几个问题
这次新安装了一个MySQL数据库,然后navicat连接数据库一点问题没有. 但是通过Java的jdbc连接却怎么都建立不了连接. 报如下错: 网上找了很久找到了原因: 数据库用的是Mysql8版本, ...
- Q值, 电感Q因素, 电感品质因素, Inductor Q, Quality Factor
Q值基本概念 Q值, 品质因素, Quality Factor 是广泛使用于物理和工程领域的一个参数, 这指的是一个机械或非机械的组件里, 共振(谐振)的能量损失比例, 是衡量一个元件或谐振回路性能的 ...
- 【linux环境】Linux环境 php连接oracle11g数据库(相关插件已备份至U盘)
1.环境:centos6 . LNMP(linux环境都可以,跟服务器没啥大关系) 2.前期准备:弄清楚 项目php的运行目录,php.ini的配置目录,php-config的运行目录 3.安装先知: ...
- Emacs中Golang的设置
欲善其事,先利其器.下面记录一些使用Emacs24做golang开发中的一些有用设置,备忘用. 一,golang中的代码跳转 emacs24的go-mode中默认用godef-describe,god ...
- 【RS】RankMBPR:Rank-Aware Mutual Bayesian Personalized Ranking for Item Recommendation - RankMBPR:基于排序感知的相互贝叶斯个性化排序的项目推荐
[论文标题]RankMBPR:Rank-Aware Mutual Bayesian Personalized Ranking for Item Recommendation ( WAIM 2016: ...
- 转 windows查看端口占用命令
转自 http://www.cnblogs.com/allenblogs/archive/2010/06/25/1765055.html 开始--运行--cmd 进入命令提示符 输入netstat ...
- 【LeetCode】Binary Tree Upside Down
Binary Tree Upside Down Given a binary tree where all the right nodes are either leaf nodes with a s ...
- 魅族MX四核手机转让,二手淘宝上+hi-pda论坛结合使用成功已出
2013-3-14 内容存档在evernote,笔记名"魅族MX四核手机转让,二手淘宝上+hi-pda论坛结合使用成功已出"