1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- //
- // 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
|