iOS系统Foundatation

IOS中的缓存

2022-04-29  本文已影响0人  Edviin_2de8

缓存方式分为两种:

NSCache 和 沙盒的缓存区别

常见的内存缓存框架有NSCache、TMMemoryCachePINMemoryCacheYYMemoryCache。常见的磁盘缓框架存有TMDiskCache、PINDiskCache、YYCache.

NSCache缓存机制

NSCache是苹果系统提供的一个缓存框架,用法和NSMutableDictionary 相似。都是通过setValue: forKey: 设置值、和objectForKey 取值,
但还是有区别:

使用方法

设置代理
需要类遵守协议NSCacheDelegate

cache.delegate = self

把数据写入NSCache缓存

 //把data数据写入内存缓存NSCache
cache.setObject(Data数据 as AnyObject, forKey: "key名字" as AnyObject)

读取内存缓存NSCache

let data = cache.object(forKey: "key名字" as AnyObject)

删除 NSCache数据

cache.removeObject(forKey: "键值" as AnyObject) //删除指定键值的数据
cache.removeAllObjects()  //删除全部

代理方法
即将回收清理cache的时候调用改方法

  func cache(_ cache: NSCache<AnyObject, AnyObject>, willEvictObject obj: Any) {
        print("删除缓存",obj)
  }

沙盒缓存

image.png
常用文件夹作用

获取文件夹目录

1.获取根目录
let homePath = NSHomeDirectory()
2.获取其他目录

image.png

获取沙盒目录路径可以通过 NSSearchPathForDirectoriesInDomains 方法,该方法有三个数:

// 获取Documents目录路径
        let docDir = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last
        print(docDir!)
        // 获取Library的目录路径
        let libDir = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true).last
        print(libDir!)
        // 获取Caches目录路径
        let cachesDir = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).last
        print(cachesDir!)
            
        // 获取Preferences目录路径
        let preferencesDir = NSSearchPathForDirectoriesInDomains(.preferencePanesDirectory, .userDomainMask, true).last
        print(preferencesDir!)
        // 获取tmp目录路径
        let tmpDir = NSTemporaryDirectory();
        print(tmpDir)

获取Documents的图片

        let imagePath = docDir!.appending("/1.png")
        let image = UIImage(contentsOfFile: imagePath)
        print(image ?? "")

写入的方法

        NSData(contentsOfFile: imagePath)?.write(toFile: newpath, atomically: true)
上一篇 下一篇

猜你喜欢

热点阅读