ios - 如何在类方法中实现键值对的简单本地缓存?

标签 ios nsdictionary nsmutabledictionary

我的项目中有一个类,它查询私有(private)服务器并在获得字母数字用户 ID 时返回人类可读的用户名。我将其实现为类方法。

我不想过多查询服务器。我知道这可以通过实现实例方法来解决,但我真的只想使用类方法。如何实现用户 ID/用户名对的私有(private)缓存,最好使用 NSMutableDictionary

最佳答案

我建议使用NSCache。在类的实现文件中创建一个static 变量。例如:

#import "MyClass.h"

static NSCache *Cache;

@implementation MyClass

+ (void)initialize 
{
    [super initialize];

    Cache = [[NSCache alloc] init];
}

//  Rest of class implementation here

@end

您将需要根据您的用例编写一些委托(delegate)给 NSCache 的类方法。例如,如果您要缓存来自网络请求的数据,您可以编写如下方法:

+ (void)cacheResponse:(NSData *)response forURL:(NSURL *)URL
{
    [Cache setObject:response forKey:URL];
}

+ (NSData *)cachedResponseForURL:(NSURL *)URL
{
    return [Cache objectForKey:URL];
}

要进一步阅读,我建议阅读 NSHipster 的精彩文章 article on NSCache .

关于ios - 如何在类方法中实现键值对的简单本地缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14291698/

相关文章:

iOS 指向指针 NSMutableDictionary 的指针

iphone - 如何将所选 ID 与数组中的国家/地区 ID 进行比较并显示其名称而不是 ID

ios - 使自定义导航按钮在触摸时发光?

ios - 使用2个表ios创建数据库

ios - 如何将此对象存储在我的 iOS 类中?

iphone - 达到 NSDictionary 中最深的子级别

ios - 如何在 iOS 中正确地将 NSDictionary 转换为 json 格式?

objective-c - NSMutableDictionary 未获得预期输出。

ios - Xcode 10 测试版错误 : linker command failed with exit code 1

objective-c - 是否可以通过 IB 指定 UITextField 中的最大字符数