iOS开发class_copyPropertyList和class_copyIvarList的区别

释放双眼,带上耳机,听听看~!

class_copyPropertyList:

通过类名获得类的属性变量。

class_copyIvarList

通过类名获得类的实例变量。

也就是说:

class_copyPropertyList获得的是由@property修饰过的变量,

class_copyIvarList获得的是class_copyPropertyList修饰的以及在m文件的中@implementation内定义的变量

eg:

//.h

@interface Model : NSObject

@property (nonatomic,copy)
NSString *sex;

@property (nonatomic,copy)
NSString *name;

@property (nonatomic,assign)
NSInteger age;

@property (nonatomic,strong)
NSDictionary *imgCode;

@end

//.m

@interfaceModel ()

@property (nonatomic,copy)
NSString *Id;

@end

@implementation Model {

    NSInteger _index;

}


@end

//使用的时候

    unsigned int propertiesCount =0;

    unsigned int ivarsCount =0;

    objc_property_t *properties =
class_copyPropertyList(Model, &propertiesCount);

    Ivar *ivars =
class_copyIvarList(Model, &ivarsCount);

则 propertiesCount = 5

ivarsCount = 6

 

人已赞赏
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索