03--KVC/KVO本质04--KVC 注意事项

总结 KVC 使用的一些注意事项

KVC 注意事项

  1. KVC 自动转换类型

    • 使用string存基本类型,系统会存为 __NSCFNumber

      [person setValue:@"20" forKey:@"age"];
      
    • 结构体类型的值,系统会存为 NSConcreteValue

  2. 设置空值

    • 重写 setNilValueForKey 方法
    • 给 NSNumber 和 NSValue 类型的属性设置空值时,会走上面的方法
    • 其他类型不走这个方法
  3. 找不到的 key
    重写方法 setValue: forUndefinedKey: 处理

  4. 取值时,找不到 key
    重写方法 valueForUndefinedKey 处理

  5. 键值验证
    validateValue:forKey:error:
    validateValue:forKeyPath:error:
    可以重写这两个方法来提前处理一些特殊key,避免找不到 key 或者其他特殊处理

  6. 如果 accessInstanceVariablesDirectly 返回为 NO,则setter中无法设置实例变量、getter中无法通过实例变量取值


写到最后,一定要学会 文档思维

你可能感兴趣的:(03--KVC/KVO本质04--KVC 注意事项)