即.如果我们写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设置为整数实例变量的值.
总结以上是内存溢出为你收集整理的在Objective-C中获取变量的属性内省全部内容,希望文章能够帮你解决在Objective-C中获取变量的属性内省所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)