一种简单的 iOS 和 Mac OS X 持久化层,具有内存缓存和预加载功能。
存储
GBStorage[@"name"] = @"Luka"; //saves in-memory only
[GBStorage save]; //syncs in-memory changes to disk
读取
GBStorage[@"name"]; //returns "Luka", checks cache first, if not found reads from disk
特定同步
[GBStorage save:@"name"]; //syncs a specific key to disk
预加载缓存
[GBStorage preload:@"bigObject"]; //asynchronously loads a specific key into memory for fast future access
清除缓存
[GBStorage clearCache]; //Evicts entire in-memory cache, but leaves files on disk. e.g. in low memory situations
[GBStorage clearCacheForKey:@"name"]; //Evicts a single key from the in-memory cache
删除
[GBStorage deletePermanently:@"bigObject"]; //deletes data from disk and cache
不要忘记导入头文件,对于 iOS
#import "GBStorageController.h"
... 或者 MacOS
#import <GBStorageController/GBStorageController.h>
存储在内存缓存中的对象只是通过强指针保留。如果它们可能被修改,那么传递一个副本到 GBStorageController
可能是个好主意。一旦将对象存储到 GBStorageController
中,您仍然可以修改对象,但请注意,这些更改不会持久到磁盘,直到您调用 [GBStorage save]
。出于性能原因,对象不是自动复制的。
键需要是 NSString
类型。它们会自动复制,以避免如果修改它们时出现未定义行为。
传递给 GBStorageController
的对象必须遵守 NSCoding 协议。这是为了使对象能够被序列化到磁盘。
iOS: 将其添加到项目的 workspace 中,为 GBToolbox-iOS 添加依赖项,与二进制链接,添加 -ObjC 链接器标志,添加头文件搜索路径。
OS X: 将其添加到项目的 workspace 中,为 GBToolbox-OSX 添加依赖项,与二进制链接,添加“复制文件”步骤将框架复制到 bundle 中。
版权所有 2013 Luka Mirosevic
本作品根据 Apache 许可协议版本 2.0 (“协议”) 许可;除非根据协议履行义务或书面同意,否则不得使用本作品。您可以在 LICENSE 文件中或通过以下链接获取协议的副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或以书面形式同意,否则在本协议下分发的软件按照“现状”基础分发,不提供任何明示或暗示保证,无论是关于其适销性、适用性还是不侵犯任何第三方的权利。有关本协议的特定语言管辖权和限制,请参阅许可协议。