美文网首页
iOS:如何访问一个对象的私有属性?(二)

iOS:如何访问一个对象的私有属性?(二)

作者: Waynee | 来源:发表于2018-04-11 17:16 被阅读155次

    上一篇文章中我们是通过KVO的方式访问对象的私有属性,此篇通过runtime的方式访问。

    1、首先导入<objc/runtime.h>。

    2、通过C方法获取对象的成员变量(ivar)class_getInstanceVariable(Class_Nullablecls,constchar*_Nonnullname);

    两个参数依次:1:被访问的实例对象, 2:被访问实例对象的成员变量名(_属性名 eg:_name);

    3、给成员变量设值:object_setIvar(id_Nullableobj, Ivar_Nonnullivar, id_Nullablevalue) ;

    三个参数依次:1:被访问的实例对象, 2:被访问实例对象的成员变量名,3:所需赋的值。

    4、读取属性的值:object_getIvar(id_Nullableobj, Ivar_Nonnullivar) ;

    两个参数依次:1:被访问的实例对象, 2:被访问实例对象的成员变量,即:第二步得到的ivar。

    以上四部就完成了对私有属性的访问。

    注意:此处的object_getIvar和object_setIvar必须一致,不可与KVC混合使用,切忌切忌。

    代码示例:(WYPerson是Person的子类)

    相关文章

      网友评论

          本文标题:iOS:如何访问一个对象的私有属性?(二)

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