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

上一篇文章中我们是通过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的子类)



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 摘自: http://www.cocoachina.com/ios/20150803/12872.html 说明...
    program袁阅读 885评论 1 3
  • 距离我最后一次见你,已经有四个月了。亲爱的大神,你在那遥远的异地还好吗?高考将我们分隔千里,可是如果我知道你去了那...
    宋汝真阅读 250评论 0 1
  • 连载十三 揭示谜底 既然老同学开了口,又这么无比的信任素碧,那就上门拜访吧!其实素碧比对于这种人情单,也是很为难的...
    周琦橞阅读 486评论 18 11