首先呢,
- (void)setValue:(id)value forKey:(NSString *)key 是NSObject的类目
- (void)setObject:(id)anObject forKey:(id <NSCopying>)aKey是NSMutableDictionary的方法
从后面的key的参数就能知道两者之间的区别。。。然后KVC里用前者比较多一点
然后就是valueForKey,objectForKey这两者之间有个小小的差别,以@开头的key,前者会帮你干掉@生成一个新的key,所以,要注意这点
如下
NSDictionary *dic=@{@"aaaa":@"@abc"};
[dic valueForKey:@"@abc"];
这样会有问题滴,他会给你生成abc这个key,然后,发现词典里木有这个玩意,于是崩溃,当然这样写很少。。
另外这个主要是基于NSMutableDictionary的,所以总的来说,在用词典的时候用他自己的方法。即,object