2

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

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

4

1 回答 1

3

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

#import "MyClass.h"

static NSCache *Cache;

@implementation MyClass

+ (void)initialize 
{
    [super initialize];

    Cache = [[NSCache alloc] init];
}

//  Rest of class implementation here

@end

您将需要编写一些委托给您的类方法,NSCache具体取决于您的用例。例如,如果您正在缓存来自网络请求的数据,您可能会编写如下方法:

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

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

为了进一步阅读,我建议阅读 NSHipster 的精彩文章NSCache

于 2013-01-12T19:59:17.480 回答