如何访问和修改一个对象的私有属性
来源:互联网 发布:java 特性 封装 编辑:程序博客网 时间:2024/06/17 12:21
有两个思路:
- KVC
- runtime
先给出我们接下来要使用的类:
@interface Person : NSObject@end@interface Person()@property (nonatomic, copy) NSString *name;@end@implementation Person@end
KVC
KVC是我比较推荐的,代码如下:
Person *person = [Person new];[person setValue:@"new name" forKey:@"name"];NSString *name = [person valueForKey:@"name"];
KVC是苹果推荐用来做类似事情的方法,所以这种需求,KVC解决是最好的,代码简洁,效率也比较高。
关于KVC的相关内容可以看下KVC详解
runtime
runtime的思路就是先读取对象的所有属性,然后找到对象的属性,赋值。代码如下:
Person *person = [Person new];unsigned int count = 0; //count记录变量的数量Ivar *members = class_copyIvarList([person class], &count);for (int i = 0; i < count; i++) { Ivar ivar = members[i]; const char *memberName = ivar_getName(ivar); NSString *memberNameString = [NSString stringWithFormat:@"%s",memberName]; if ([memberNameString isEqualToString: @"_name"]) { object_setIvar(person, ivar, @"newName"); }}
runtime的做法相对来讲代码比较多,也不够简洁,但是还是可以实现这个需求的。runtime的详细内容可以参考iOS Runtime 详解
阅读全文
0 0
- 如何访问和修改一个对象的私有属性
- ios 对象私有属性的访问和修改
- iOS中访问和修改一个类的私有属性
- 面试题:如何访问并修改一个类的私有属性?
- 访问或修改一个类的私有属性
- 修改对象私有属性
- python对象:访问私有属性和私有方法
- 反射访问类的私有属性对象的私有方法
- iOS开发中访问并修改一个类的私有属性
- 一个程序理解python的类属性和实例属性(共有属性和私有属性的访问区别)
- 如何修改一个类的私有成员?
- PHP面向对象----(私有属性的访问方法)
- 内部类是如何访问外部类私有对象的
- 如何取得ChipmunkConstraint实例对象的私有属性
- 通过反射访问任意类的私有方法和属性
- 如何利用反射去访问一个私有的方法
- Python访问类的私有属性和私有方法的正确姿势
- js的作用域和访问对象私有域
- ORA-09817: Write to audit file failed oracle磁盘空间满了
- word文档加密破解方法,实测有效
- TI单节电量计基本介绍及常见问题解答
- 一篇文章,读完物联网技术精华
- MSP MCU I2C入门指南
- 如何访问和修改一个对象的私有属性
- spi协议及工作原理分析
- USI和USCI的区别
- VARIANT 类型说明
- [原创]矩阵键盘原理分析手稿
- TI开发环境下载资源
- Windows7系统推荐
- [原创]找不到mswinsck.ocx的解决办法
- [原创] Xinput_1.3.DLL / MSVCR100.DLL文件缺失解决办法