美文网首页
runTime获取类属性

runTime获取类属性

作者: 冷武橘 | 来源:发表于2020-07-24 18:17 被阅读0次
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface Student : NSObject
@property(nonatomic,strong)NSString *name;
@property(nonatomic,strong)NSData *data;
@property(nonatomic,assign)CGFloat score;
@property(nonatomic,assign)double weight;
@property(nonatomic,assign)BOOL isMarried;
@property(nonatomic,assign)NSInteger age;
@property(nonatomic,strong)UIView *view;
@property(nonatomic,assign)long long height;
@property(nonatomic,assign)NSUInteger h;
@property(nonatomic,strong)NSDictionary *dictionry;
@property(nonatomic,strong)NSMutableArray *array;
+ (NSDictionary *)classIvarNameType;
@end
NS_ASSUME_NONNULL_END

+ (NSDictionary *)classIvarNameType{
    unsigned int outCount = 0;
    Ivar *varList = class_copyIvarList(self, &outCount);
    NSMutableDictionary *nameTypeDic = [NSMutableDictionary dictionary];
    for (int i = 0; i < outCount; i++) {
        Ivar ivar = varList[I];
        
        // 1. 获取成员变量名称
        NSString *ivarName = [NSString stringWithUTF8String: ivar_getName(ivar)];
        if ([ivarName hasPrefix:@"_"]) {
            ivarName = [ivarName substringFromIndex:1];
        }
        // 2. 获取成员变量类型
        NSString *type = [NSString stringWithUTF8String:ivar_getTypeEncoding(ivar)];
        type = [type stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"@\"”]];
        [nameTypeDic setValue:type forKey:ivarName];
    }
    NSLog(@"%@",nameTypeDic);
     return nameTypeDic;
}
@end

{
age = q;
array = NSMutableArray;
data = NSData;
dictionry = NSDictionary;
h = Q;
height = q;
isMarried = B;
name = NSString;
score = d;
view = UIView;
weight = d;
}


截屏2020-07-24 下午6.16.27.png

相关文章

网友评论

      本文标题:runTime获取类属性

      本文链接:https://www.haomeiwen.com/subject/xtrslktx.html