KVC的底层实现原理

2016-04-26  本文已影响204人  Mr_董
+ (instancetype)flageWithDict:(NSDictionary *)dict
{
    //模型
    DZFlag *flag = [[self alloc] init];
    // 利用KVC字典转模型
//    [flag setValuesForKeysWithDictionary:dict];
    //遍历字典的键值对
    [dict enumerateKeysAndObjectsUsingBlock:^(NSString *key, id obj, BOOL *stop) {
        
        NSString *funcName = [NSString stringWithFormat:@"set%@",key.capitalizedString];
        
        if ([flag respondsToSelector:@selector(funcName)]) {
            
            [flag setValue:obj forKeyPath:key];
            
        }
    }];

    return flag;
}


- (void)setIcon:(NSString *)icon
{
//    NSLog(@"%s",__func__);重写set方法,返回控制器想要的东西。
    _icon = [UIImage imageNamed:icon];
}

上一篇 下一篇

猜你喜欢

热点阅读