class_copyPropertyList:通过类名获得类的属性变量。
class_copyIvarList: 通过类名获得类的实例变量。
也就是说:
class_copyPropertyList获得的是由@property修饰过的变量,
class_copyIvarList获得的是class_copyPropertyList修饰的以及在m文件的中@implementation内定义的变量
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface Model : NSObject
@property (nonatomic,copy) NSString *sex;
@property (nonatomic,copy) NSString *name;
@property (nonatomic,assign) NSInteger age;
@property (nonatomic,strong) NSDictionary *imgCode;
@end
NS_ASSUME_NONNULL_END
复制代码
#import "Model.h"
@interface Model()
@property (nonatomic,copy) NSString *Id;
@end
@implementation Model
{
NSInteger _index;
}
@end
复制代码
#import "LGTestViewController.h"
#import "Model.h"
@interface LGTestViewController ()
@end
@implementation LGTestViewController
- (void)viewDidLoad {
[super viewDidLoad];
//使用的时候
unsigned int propertiesCount = 0;
unsigned int ivarsCount = 0;
objc_property_t *properties = class_copyPropertyList([Model class], &propertiesCount);
Ivar *ivars = class_copyIvarList([Model class], &ivarsCount);
NSLog(@"propertiesCount = %u,ivarsCount = %u",propertiesCount,ivarsCount);
//propertiesCount = 5,ivarsCount = 6
}
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END