iOS中如何自定义加密缓存及缓存原理分析(第一节:缓存原理分析)

本文介绍了iOS中自定义缓存功能的实现,特别是针对加密缓存的需求。首先,文章提到Objective-C中NSCache作为缓存的基础,通过设置键值对进行数据保存,并建议将其设计为单例类以确保全局唯一。其次,文章指出沙盒中的cache文件夹也是存储缓存数据的地方,建议结合NSCache一同使用,即数据既存于内存缓存也存于磁盘缓存。在获取缓存时,优先从内存中查找,若无则查询沙盒。最后,文章以AFNetworking的图片缓存源码为例,进一步说明了缓存机制的实际应用。
摘要由CSDN通过智能技术生成

sourceURL:

最近一个朋友问我如何自己做一个图片缓存功能,说实话之前还真的没有好好研究下,到底是如何在项目中做缓存的?以及如果需要更加机密的缓存如何做呢?正好项目中做了不错的缓存功能,我就抛砖引玉了,大神请见谅,本人眼界有限,求拍砖。

首先明白一点,OC是存在一个缓存类的,关键我们是如何使用它的。

@interface NSCache : NSObject {
- (id)objectForKey:(id)key;
- (void)setObject:(id)obj forKey:(id)key
; // 0 cost

上面的两个红色的方法,就告诉我们使用的方法就是通过类似设置字典键值对的形势来保存数据的。所以可以简化理解为缓存类就是一个自定义字典。我们要缓存的话,只需要把这个字典做成一个在在app所有页面都唯一存在的字典就好了,所以需要把它设置为一个单例类,什么是单例类大家自己去查查。

还有个一个点大家可能没有考虑到,就是我们的沙盒中明明也存在一个叫做cache的文件夹,这个就是保存缓存数据的文件夹,所以我们要联合起来用。

如何联合来用?

大致思路就是我们保存到缓存单例类的同时也保存在沙盒缓存(保存到沙盒缓存中记得在主线程中执行)中,获取的时候首先去获取缓存类中的缓存数据,如果不存在在去沙盒缓存文件夹下去获取,最后再找不到才算不存在缓存数据。

说了一大通我们先看看AFNetworking源码是如何缓存图片的。

// UIImageView+AFNetworking.m
//
// Copyright (c) 2013-2014 AFNetworking (http://afnetworking.com)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值