4://KVC工作流程
//KVC首先检查类中,是否有相应的getter,setter方法;
//如果有就调用,如果没有就去找有没有和key相同名字的实例变量.
//如果也没有,就去找有没有和_key相同名字的实例变量;
5: //第一个方法
//设置值----->[t1 setValue:@"苍老师" forKey:@"name"];
[t1 setValue:@"苍老师" forKey:@"name"];
//取值----->[t1 valueForKey:@"name"]
NSLog(@"%@",[t1 valueForKey:@"name"]);
//第二种方法
[t1 setValue:@18 forKey:@"age"];
NSLog(@"%ld",[[t1 valueForKey:@"age"] integerValue]);
//第三种
Student * s1 = [[Student alloc] init];
[t1 setValue:s1 forKey:@"stu1"];
[t1 setValue:@"大师兄" forKeyPath:@"stu1.name"];
//第四种
NSLog(@"%@",[t1 valueForKeyPath:@"stu1.name"]);
//第五种
NSDictionary * dict = @{@"name":@"唐僧",@"age":@20,@"stu1":s1,@"1":@"a"};
[t1 setValuesForKeysWithDictionary:dict];
NSLog(@"%@",[t1 valueForKeyPath:@"name"]);
//第六种
在.m中实现
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
{
NSLog(@"%@ %@没有找到",key,value);
}