先上苹果官方APi定义
setValue是放在NSKeyValueCoding文件里,做了NSMutableDictionary针对KVC的一个分类扩展,这样专类专用的理解是对NSMutableDictionary特别针对KVC的适用延展,限定死key的类型必须为字符串类型,setValue实际也是调用字典的SetObject的方法,并当setObject为nil的时候会调用RemoveObject的方法,让这个nil的object从字典中移除。
setObject是放在NSDictionAry文件里,作为可变字典的一个API方法,调用对字典进行赋值,这里对setObject forKey中object和key都没有限定特定的类型,而是一个泛型。
Tip:实际使用中如无特定需求建议是使用setValue:forKey,setValue会针对value为nil的处理,setObject并不会对object为nil的处理,当setObejct为nil的时候会造成崩溃。