作者:Mitchell
- 自动提示宏:就是在输入宏的时候有提示功能
- 应用场景: 想输入对象的属性的时候有提示
- 示例
#define keyPath(objc,keyPath) @(((void)objc.keyPath, #keyPath))
- 自动提示宏:(objc.keyPath)这一部分内容,仅仅是让你的宏具有提示功能
- 为什么要加(void)?,这里是一个语法问题,逗号表达式的内容,
- 例如:
int a = (3,5);
- a的值肯定是5,而且会报一个3没使用的警告,我们如何消除这个警告?
int a = ((void)3,5);
这样就会消除这个警告。
- 那么这句话((void)objc.keyPath, #keyPath)
就会返回 #keyPath 内容,keyPath 就是我们对象的属性,但是这个时候返回的是属性,因为宏定义是 C 语言的内容所以我们先需要将内容转换为 C 语言的字符串,也就是#keyPath。
- 这个时候返回的是 C 语言的字符串,而我们想要的是 OC 的字符串,直接使用 @()
这个语法 就可以了。
网友评论