KVC中setValue:forKey:实现原理

版权声明:本文为延成原创文章,转载请标明出处

 	//[item setValuesForKeysWithDictionary:dict];
    //setValuesForKeysWithDictionary:实现原理
    [dict enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
        [item setValue:obj forKey:key];
    }];
  1. 查该对应的key值有没有set方法,如果有就会自动调用set方法进行赋值.
  2. 如果没有set方法,那么它就判断有没有key相同名称并且带有下划线的属性,如果就,就给该属性赋值.
  3. 如果没有带有下划线的属性,那么它就会查看有没有跟key值相同名称的属性,如果有,就给该属性赋值.
  4. 如果还没有跟key值相同名称的属性,那么就会报错.

你可能感兴趣的:(ios基础2)