作者:怪话greenup | 来源:互联网 | 2023-05-18 08:06
自定义下面的宏就拥有自动提示属性功能#definekeyPath(objc,keyPath)@(((void)objc.keyPath,#keyPath));
自定义下面的宏就拥有自动提示属性功能
#define keyPath(objc,keyPath) @(((void)objc.keyPath,#keyPath));
一:作用和使用场景
- 自动提示宏意义:输入什么属性,就把属性自动生成OC字符串.
- 自动提示宏作用:输入某个对象的某个属性的时候有自动提示功能
- 自动提示宏应用场景:在KVO,KVC中使用自动提示宏,监听某个对象某个属性,通过自动提示宏,就可以防止输入错误.
二:自动提示宏如何实现:
-
了解宏的实现原理,每输入一个字母就会拷贝一次,首先会把之前的内容补齐
-
在宏里面如果在参数前添加了#,就会把参数变成C语言字符
-
在代码中,输入某个对象的某个属性的时候都有提示,可以在宏里面也有做这样的操作,假设在宏里面输入某个对象的某个属性.
-
最终宏需要把宏里面的keyPath这个参数生成一个OC字符串
-
使用逗号表达式,永远等于最右边的值,在右边生成一个keyPath的OC字符串
-
一旦把一个值强转成void类型,表示不使用这个值
-
在宏里面只能做到把参数变成c字符串,因此先生成c字符串,在转换成OC字符串.
-
在宏里面如果在参数前添加了#,就会把参数变成C语言字符串 #keyPath = “keyPath”
-
c语言如何转OC字符串,也是包装一下 @(“c”)