私有屬性類 Person.m文件
#import "Person.h"
@interface Person ()
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSNumber *age;
@property (nonatomic, assign) BOOL gender;
@end
@implementation Person
- (NSString *)description {
return [NSString stringWithFormat:@"%@-%@-%d",_name,_age,_gender];
}
@end
Person *person = [Person new];
unsigned int count = 0;
Ivar *members = class_copyIvarList([Person class], &count);//獲取的倒序?qū)傩粤斜?for (int i = 0; i < count; i ++) {
const char *memberName = ivar_getName(members[i]);
NSLog(@"%s",memberName);//屬性名帶有_前綴尚卫,例如_name
Ivar m_name = members[i];
pragma mark -----修改私有屬性的值1
object_setIvar(person, m_name, @1);//設(shè)置時(shí),對(duì)象和基本類型不能相互賦值
NSLog(@"%@",[person description]);
}
pragma mark -----修改私有屬性的值2
[person setValue:@"zhangsan" forKey:@"name"];
[person setValue:@"nihao" forKey:@"gender"];//給基本屬性賦值對(duì)象,不起作用
NSLog(@"%@",[person description]);
objc_property_t *member = class_copyPropertyList([Person class], &count);//正序?qū)傩粤斜?
for (int i = 0; i < count; i ++) {
const char *memberName = property_getName(member[i]);
NSLog(@"%s",memberName);// 打印原始屬性名
}