KVC本质

KVC

KVC的全称是Key-Value Coding,俗称“键值编码”,可以通过一个key来访问某个属性.

//API
- (void)setValue:(id)value forKeyPath:(NSString *)keyPath;
- (void)setValue:(id)value forKey:(NSString *)key;
- (id)valueForKeyPath:(NSString *)keyPath;
- (id)valueForKey:(NSString *)key; 

KVC使用

//People类
@interface People : NSObject
@property(nonatomic, assign)int age;
@end
//main
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here..
        People *p = [[People alloc] init];
        [p setValue:@10 forKey:@"age"];
        //[p setValue:@10 forKeyPath:@"age"];
        NSLog(@"%d",p.age);
        return 0;
    }
}

可以看到打印都可以打印出10


KVC使用

KVC赋值过程

KVC赋值

KVC赋值会触发KVO
KVO原理类似以下操作:
1.KVO赋值操作(不管是不是调用set或者直接赋值)
2.willChangeValueForKey:
3.didChangeValueForKey:(内部调用通知KVO方法)

KVC取值过程

KVC取值

你可能感兴趣的:(KVC本质)