- [obj protected] 这样就是私有的成员变量:
@interfaceHYBTestModel: NSObject {
@private NSString *_userName;
}
@end
- 没有关键字声明为私有方法,因为ObjC中也没有真正意义上的私有方法。我们要让方法成员私有,只能通过放在.m文件中定义而不暴露在外部。但是,如果有人知道内部此这么一个方法,那么也是可以访问的。
先说明:ObjC中没有绝对的私有变量和私有方法。
如何修改私有成员变量的值?
HYBTestModel *model = [[HYBTestModel alloc]init];
// 通过KVC可以轻松修改私有成员变量// 自己加一个打印就可以看到有值了!
[modelsetValue:@"修改私有变量的值"forKey:@"_userName"];
那又如何访问私有成员变量?
Ivar userNameIvar = class_getInstanceVariable([modelclass], "_userName");
NSString *userName = object_getIvar(model, userNameIvar);
我们可以通过runtime来获取对象的成员变量Ivar,然后再通过object_getIvar来获取某个对象的成员变量的值。