NSCache的下标用法

NSCache类和NSDictionary类很相似,也提供key,value的存储方式,不一样的是NSCache在内存吃紧的时候会自动释放。

NSCache *cache = [[NSCache alloc] init];
[cache setObject:@"Eric" forKey:@"name"];
[cache setObject:@"Male" forKey:@"sex"];
// name:Eric, sex:Male
NSLog(@"name:%@, sex:%@", [cache objectForKey:@"name"], [cache objectForKey:@"sex"]);

如果需要NSCache支持下标语法的话,需要加个Category才可以。

@interface NSCache(NSCache_extension)

- (id)objectForKeyedSubscript:(id)key;
- (void)setObject:(id)object forKeyedSubscript:(id<NSCopying>)key;

@end

@implementation NSCache(NSCache_extension)

- (id)objectForKeyedSubscript:(id)key {
    return [self objectForKey:key];
}

- (void)setObject:(id)object forKeyedSubscript:(id<NSCopying>)key {
    [self setObject:object forKey:key];
}

@end

接下来就可以使用下标的写法了。

NSCache *cache = [[NSCache alloc] init];
cache[@"name"] = @"Eric";
cache[@"sex"] = @"Male";
// name:Eric, sex:Male
NSLog(@"name:%@, sex:%@", cache[@"name"], cache[@"sex"]);

猜你喜欢

转载自eric-gao.iteye.com/blog/2234725