Objective-C>有没有办法获得指针/变量名称作为NSString?

时间:2013-07-25 07:23:29

标签: objective-c instance-variables introspection

有没有办法让指针/变量的名称为字符串?

...即

NSNumber* aNumber;
int anInt;

NSString* name = aFunctionThatDoesWhatIAskedFor(aNumber);
NSLog(@"%@",name); //should print "aNumber";

name = aFunctionThatDoesWhatIAskedFor(anInt);
NSLog(@"%@",name); //should print "anInt";

2 个答案:

答案 0 :(得分:3)

定义此宏

#define nameOfVariable(x) NSLog( @"%s",#x)

使用此宏

nameOfVariable(aNumber);
nameOfVariable(anInt);

<强>解释

#之前的参数名称称为 Stringification 。您可以使用'#'运算符对变量参数进行字符串化或将其标记粘贴到另一个标记。

  

有时您可能希望将宏参数转换为字符串   不变。参数不会在字符串常量内替换,但是你   可以使用#' preprocessing operator instead. When a macro parameter is used with a leading#',预处理器将其替换为   实际参数的文字文本,转换为字符串常量。   与普通参数替换不同,参数不是   首先是宏观扩张。这称为 stringification

答案 1 :(得分:0)

在大多数编程语言中,对象没有名称。