iPhone开发笔记(16)使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
来源:互联网 发布:mac的launchpad在哪里 编辑:程序博客网 时间:2024/05/18 06:19
为了节约流量,同时也是为了更好的用户体验,目前很多应用都使用本地缓存机制,其中以网易新闻的缓存功能最为出色。我自己的应用也想加入本地缓存的功能,于是我从网上查阅了相关的资料,发现总体上说有两种方法。一种是自己写缓存的处理,一种是采用ASIHTTPRequest中的ASIDownloadCache。根据我目前的技术水平和时间花费,我果断选择了后者,事实证明效果也很不错。下面说一下实现方法:
1、设置全局的Cache
在AppDelegate.h中添加一个全局变量
- @interface AppDelegate : UIResponder <UIApplicationDelegate>
- {
- ASIDownloadCache *myCache;
- }
- @property (strong, nonatomic) UIWindow *window;
- @property (nonatomic,retain) ASIDownloadCache *myCache;
在AppDelegate.m中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中添加如下代码
- //自定义缓存
- ASIDownloadCache *cache = [[ASIDownloadCache alloc] init];
- self.myCache = cache;
- [cache release];
- //设置缓存路径
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentDirectory = [paths objectAtIndex:0];
- [self.myCache setStoragePath:[documentDirectory stringByAppendingPathComponent:@"resource"]];
- [self.myCache setDefaultCachePolicy:ASIOnlyLoadIfNotCachedCachePolicy];
在AppDelegate.m中的dealloc方法中添加如下语句
- [myCache release];
到这里为止,就完成了全局变量的声明。
2、设置缓存策略
在实现ASIHTTPRequest请求的地方设置request的存储方式,代码如下
- NSString *str = @"http://....../getPictureNews.aspx";
- NSURL *url = [NSURL URLWithString:str];
- ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
- //获取全局变量
- AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
- //设置缓存方式
- [request setDownloadCache:appDelegate.myCache];
- //设置缓存数据存储策略,这里采取的是如果无更新或无法联网就读取缓存数据
- [request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
- request.delegate = self;
- [request startAsynchronous];
3、清理缓存数据
我在这里采用的是手动清理数据的方式,在适当的地方添加如下代码,我将清理缓存放在了应用的设置模块:
- AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
- [appDelegate.myCache clearCachedResponsesForStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
0 0
- iPhone开发笔记(16)使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- iPhone开发笔记(16)使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- iPhone开发笔记(16)使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- 使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- 使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- 使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- 使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- ASIHTTPRequest和ASIDownloadCache实现本地缓存
- ASIHTTPRequest和ASIDownloadCache实现本地缓存
- ASIHTTPRequest和ASIDownloadCache实现本地缓存
- iOS学习笔记22—ASIHTTPRequest和ASIDownloadCache实现本地缓存
- ASIHTTPRequest的使用—— ASIDownloadCache缓存
- iPhone开发笔记(9)ASIHttpRequest和json-framework实现json解析(iOS客户端)
- iPhone开发笔记(9)ASIHttpRequest和json-framework实现json解析(iOS客户端)
- ASIHTTPRequest ASIDownloadCache
- iphone开发--使用ASIHTTPRequest实现下载,断点续传功能
- iphone开发笔记五 asihttprequest访问websevice
- ASIHttpRequest 本地缓存
- .NET程序员,我们应该更专业点
- 梵蒂冈地方规范地
- Android数据库高手秘籍(二)——创建表和LitePal的基本用法
- iOS中Cell高度如何能够自动适应需要显示的内容
- C Primer Plus - 笔记
- iPhone开发笔记(16)使用ASIHTTPRequest和ASIDownloadCache实现本地缓存
- js常用验证代码
- iPhone6 Plus单手难驾驭?日本发明手指加长器
- hadoop单节点安装
- mysql 盘满了怎么办
- cocos2dx-3.2(35) ClippingNode 遮罩
- Cocos2d-x之 CCEGLViewProtocol-->CCEGLView
- windows 7 Installation DNS BIND
- MySQL性能优化之参数配置