#define KEY_PATH(obj,keyPath) @(((void)obj.keyPath,#keyPath))
用这个宏可以让你在输入宏的时候有提示功能。宏定义里面的#号,会自动把后面的参数变成C语言的字符串。
这个宏可以对基本类型进行装箱操作,对于逗号表达式会取最后一个值,例如
(20, 10, 2)
这个表达式的值为2。
为了防止前面两个值因为没有使用而报警告,你可以这样写
((void)20, (void)10, 2)
这个括号相当于return 2。
为了把整个值转变成对象类型可以再加一个括号
@(((void)20, (void)10, 2))
对于
#define KEY_PATH(obj,keyPath) @(((void)obj.keyPath,#keyPath))
来说就是取keyPath的值。
如上图,这样使用的时候更清晰明了,所以在某些时候使用自动提示宏是很必要的。