在编程领域里的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。解释器在遇到宏时会自动进行这一模式替换。绝大多数情况下,“宏”这个词的使用暗示着将小命令或动作转化为一系列指令。
在RAC框架中,其宏定义的功能强大能帮助开发者更加快速、便捷地进行开发工作。常用的比如:打破循环引用、以及KVO方法的属性监听等等。
打破循环引用
KVO方法的属性监听
宏的强大之处:
最长用的@weakify(self)
weakify(…)实现
此处注意,反斜杠\的作用是作为连接符使用,将代码进行连接,即使用
weakify(…)宏定义时,将先后执行rac_keywordify
与metamacro_foreach_cxt(rac_weakify_,, __weak, __VA_ARGS__)
代码。
先看下rac_keywordify代码的作用:
在debug环境下,只有一句autoreleasepool {},此代码是增强代码的编译能力,至于为何要如此使用?在经常使用的宏定义RACObserve(TARGET, KEYPATH)观察KVO属性时,能够在KEYPATH中,代码预提示出指定TARGET中的属性
RACObserve能够提示出当前self中存在的实例变量