New file |
| | |
| | | // |
| | | // MJProperty.h |
| | | // MJExtensionExample |
| | | // |
| | | // Created by MJ Lee on 15/4/17. |
| | | // Copyright (c) 2015年 小码哥. All rights reserved. |
| | | // 包装一个成员属性 |
| | | |
| | | #import <Foundation/Foundation.h> |
| | | #import <objc/runtime.h> |
| | | #import "MJPropertyType.h" |
| | | #import "MJPropertyKey.h" |
| | | |
| | | /** |
| | | * 包装一个成员 |
| | | */ |
| | | @interface MJProperty : NSObject |
| | | /** 成员属性 */ |
| | | @property (nonatomic, assign) objc_property_t property; |
| | | /** 成员属性的名字 */ |
| | | @property (nonatomic, readonly) NSString *name; |
| | | |
| | | /** 成员属性的类型 */ |
| | | @property (nonatomic, readonly) MJPropertyType *type; |
| | | /** 成员属性来源于哪个类(可能是父类) */ |
| | | @property (nonatomic, assign) Class srcClass; |
| | | |
| | | /**** 同一个成员属性 - 父类和子类的行为可能不一致(originKey、propertyKeys、objectClassInArray) ****/ |
| | | /** 设置最原始的key */ |
| | | - (void)setOriginKey:(id)originKey forClass:(Class)c; |
| | | /** 对应着字典中的多级key(里面存放的数组,数组里面都是MJPropertyKey对象) */ |
| | | - (NSArray *)propertyKeysForClass:(Class)c; |
| | | |
| | | /** 模型数组中的模型类型 */ |
| | | - (void)setObjectClassInArray:(Class)objectClass forClass:(Class)c; |
| | | - (Class)objectClassInArrayForClass:(Class)c; |
| | | /**** 同一个成员变量 - 父类和子类的行为可能不一致(key、keys、objectClassInArray) ****/ |
| | | |
| | | /** |
| | | * 设置object的成员变量值 |
| | | */ |
| | | - (void)setValue:(id)value forObject:(id)object; |
| | | /** |
| | | * 得到object的成员属性值 |
| | | */ |
| | | - (id)valueForObject:(id)object; |
| | | |
| | | /** |
| | | * 初始化 |
| | | */ |
| | | + (instancetype)cachedPropertyWithProperty:(objc_property_t)property; |
| | | |
| | | @end |