NSLog - 如何打印对象名称?

Con*_*sed 4 nslog ios objectname

考虑,

NSString *myString = @"Welcome";

NSLog(@"%@",myString);
Run Code Online (Sandbox Code Playgroud)

将Welcome在控制台中打印.

我可以像" myString: Welcome" 一样打印字符串吗?

我的意思是,我可以获得对象名称(" myString")以及对象值​​(" Welcome")吗?

Ash*_*dhe 6

使用以下代码:

#define stringVariable(x) NSLog( @"%s:%@",#x, x) 

NSString *myString=@"Welcome";

stringVariable(myString); 
Run Code Online (Sandbox Code Playgroud)

注意:一般原则是当你在#define体内的参数前放一个#时,预处理器用一个传递给宏的精确表达式的C字符串替换它.传递变量名称时,您将获得该名称.

  • 这是正确的,但我建议使用不同的宏名称.`stringVariable`可能与现有的变量名冲突.而且由于它是一个宏,它可能会导致棘手且不明显的错误.通常,全大写用于宏.结合前缀,它应该或多或少安全.像`CF_LOG_OBJECT_VARIABLE(x)`这样的东西.无论如何你不必输入它.Viva la autocomplete :) (2认同)