美文网首页iOS进阶iOS面试题
如何声明私有变量和私有方法(阅读iOS面试题记录)

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

作者: Sean_Shi | 来源:发表于2016-06-13 11:49 被阅读501次
    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面试题记录)

        本文链接:https://www.haomeiwen.com/subject/zjjydttx.html