在Objective-C中获取变量的属性内省

在Objective-C中获取变量的属性内省,第1张

概述给定变量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 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设置为整数实例变量的值.

总结

以上是内存溢出为你收集整理的在Objective-C中获取变量的属性内省全部内容,希望文章能够帮你解决在Objective-C中获取变量的属性内省所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1222177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存