我正在尝试使用NSDictionary在视图控制器中缓存一些图像,但我没有太多运气。
对于初学者我的.h看起来像这样
...
NSDictionary *images;
}
@property (nonatomic, retain) NSDictionary *images;
在我的.m中合成属性并尝试按如下方式添加图像:
[self.images setValue:img forKey:@"happy"];
以后我尝试按键
抓图像UIImage *image = [self.images objectForKey:@"happy"];
if (!image) {
NSLog(@"not cached");
}else {
NSLog(@"had cached img %@", image);
}
然而每次我NSLog字典它都是null。如果我@synthesize属性我应该准备开箱即用吗?或者我没有正确地将它添加到词典中?
提前谢谢
答案 0 :(得分:5)
Synthesizing没有实例化变量,所以你仍然需要在某个时候分配+ init。
但是如果您想在创建后将对象添加到字典中,则需要使用NSMutableDictionary
。
然后在viewDidLoad中使用以下内容对其进行alloc + init:
self.images = [[[NSMutableDictionary alloc] initWithCapacity:10] autorelease];
然后要设置值,请使用setObject:forKey:
(不是setValue:forKey:
):
[images setObject:img forKey:@"happy"];
请记住在dealloc中发布字典。