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/

10-14 21:32