-setValue:forKey:和 -valueForKey [car setValue: @“x” forKey: @“name”]; [car setValue: [NSNumber numberWithFloat:205.4 ] forKey: @“number”]; //先进行包装 -setValue:forKey:首先查找以键key 或者 isKey命名的setter方法。若是不存在setter方法,就在类中查找名为_key 或 key 的实例变量,而后为它赋值。 NSString *name = [car valueForKey:@“name”]; NSLog(@“Name is %@”, name); -valueForKey 首先查找以键key 或者 isKey命名的getter方法。 若是不存在getter方法,则在对象内部 查找名为_key 或 key 的实例变量。 -valueForKey 在Obj-C运行时使用元数据打开对象并进入其中查找须要的信息。经过使用KVC,能够获取不存在getter方法的对象值,无需经过对象指针直接访问实例变量。 键路径 [car setValue: [NSNumber numberWithInt: 155] forKeyPath: @“engine.horsepower”]; NSLog(@“horsepower is %@”, [car valueForKeyPath:@“engine.horsepower”]); 若是向NSArray请求一个键值,它实际上会查询数组中的每一个对像来查找这个键值,而后将查询结果打包到另外一个数组中返回。