如何声明私有变量和私有方法(阅读iOS面试题记录)

  1. [obj protected] 这样就是私有的成员变量:
  @interfaceHYBTestModel: NSObject {
     @private NSString *_userName;
   }
   @end
  1. 没有关键字声明为私有方法,因为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来获取某个对象的成员变量的值。

你可能感兴趣的:(如何声明私有变量和私有方法(阅读iOS面试题记录))