【发布时间】:2011-09-30 17:52:00
【问题描述】:
我需要一种方法来传递属性并获取分配给它的名称。有什么建议吗?
@property (nonatomic, retain) MyObject *crazyObject;
NSString *str = SOME_WAY_TO_GET_PROPERTY_NAME(crazyObject);
// Above method should return @"crazyObject"
【问题讨论】:
-
在代码
SOME_WAY_TO_GET_PROPERTY_NAME(crazyObject)中,crazyObject不是属性——它是一个实例变量,是函数的参数。在函数内部,它只是一个与实例变量具有相同值的参数。实际上获取属性本身以便将其传递给函数将涉及更多代码。就目前而言,您所要求的基本上是将SOME_WAY_TO_GET_PROPERTY_NAME()转换为@""。这实际上是可行的——#define SOME_WAY_TO_GET_PROPERTY_NAME(n) @#n——但不是很有用。你能解释一下这个用例吗? -
我用 _ 定义我的实例变量,例如 @synthesize crazyObject = _crazyObject;
-
那么
crazyObject在这种情况下没有任何意义。它仍然无法识别属性。再说一遍:你能解释一下这个用例吗?您要做什么尚不清楚,因为如果您有要传递给此函数的属性名称,则可以将其括在引号中。
标签: objective-c introspection objective-c-runtime declared-property