在Objective-C中获取变量的属性内省
发布时间:2020-12-16 10:42:14 所属栏目:百科 来源:网络整理
导读:给定变量id x和字符串NSString * s如何获取变量x的名称为s的实例属性? 即.如果我们写NSString * s = @“a”,那么我们想要x.a 解决方法 Objective-C Runtime Reference列表 Ivar class_getInstanceVariable(Class cls,const char * name) 返回表示类中实例变
给定变量id x和字符串NSString * s如何获取变量x的名称为s的实例属性?
即.如果我们写NSString * s = @“a”,那么我们想要x.a 解决方法
Objective-C Runtime Reference列表
Ivar class_getInstanceVariable(Class cls,const char * name) 返回表示类中实例变量的opaque类型.然后你把它传递给 id object_getIvar(id object,Ivar ivar) 获取实际的实例变量.所以你可以说 #import <objc/runtime.h> id getInstanceVariable(id x,NSString * s) { Ivar ivar = class_getInstanceVariable([x class],[s UTF8String]); return object_getIvar(x,ivar); } 如果实例变量是一个对象.但是,如果实例变量不是对象,则调用 Ivar object_getInstanceVariable(id obj,const char * name,void ** outValue) 传入指向正确类型变量的指针.例如,如果实例变量是int, int num; object_getInstanceVariable(x,[s UTF8String],(void**)&num); 将num设置为整数实例变量的值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- c# – 使用Task.Run()创建的任务调用await
- VC警告C4356:无法通过派生类初始化静态数据成员
- Convert Xml to json object in android
- c# – 在面向.NET 2.0时使用(某些)lambda表达式?
- c# – 如何在用户控件WinForm中访问托管表单上的
- AVR单片机用progisp下载时报错Chip Enable Progr
- 设计模式六大原则(1):单一职责原则
- u-boot-2011.03在mini2440/micro2440上的移植(六
- rk3288 ov8858 camera mipi 30p 黑屏修改cam_boa
- 将嵌套for循环转换为低于O(n ^ 3)
热点阅读