Objective-C提供了运行时反射功能。我正在尝试查找已声明属性的getter/setter选择器名称。我知道field
/setField:
这样的基本规则。无论如何,我认为运行时反射应该提供一种功能来解析完整抽象的名称,但是我找不到该功能。
如何在Objective-C(实际上是Apple的Cocoa)中通过运行时反射来解析已声明属性的getter/setter方法选择器(不是实现)
或反向查询。 (方法选择器→声明的属性)
最佳答案
我认为只有在属性以显式声明(setter = XXX和/或getter = XXX)的情况下,您才能获取选择器名称
因此,要获取类“Cat”的某些属性“furType”的getter和setter选择器名称:
objc_property_t prop = class_getProperty([Cat class], "furType");
char *setterName = property_copyAttributeValue(prop, "S");
if (setterName == NULL) { /*Assume standard setter*/ }
char *getterName = property_copyAttributeValue(prop, "G");
if (getterName == NULL) { /*Assume standard getter */ }
除了遍历所有属性并查找匹配项外,我不知道反向查询。希望能有所帮助。
关于objective-c - 如何在Objective-C中使用运行时反射来解析属性getter/setter方法选择器? (或反向),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8461902/