gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 03:59:39 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com