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"]);