如何在Objective-C中使用运行时反射解析属性getter/setter方法选择器?(或反向)

Eon*_*nil 4 reflection cocoa objective-c declared-property

Objective-C提供运行时反射功能.我正在尝试查找声明属性的getter/setter选择器名称.我知道像field/ 这样的基本规则setField:.无论如何,我认为运行时反射应该提供一个功能来解析完整抽象的名称,但我找不到该功能.

如何在Objective-C中解析带有运行时反射的声明属性的getter/setter方法选择器(而不是实现)(实际上是Apple的Cocoa)

或反向查询.(方法选择器→声明的属性)

Fir*_*eer 8

我认为只有在使用explicit声明属性时才能获取选择器名称(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 */ }
Run Code Online (Sandbox Code Playgroud)

除了遍历所有属性并查找匹配项之外,我不知道反向查询.希望有所帮助.