(一)神奇的Macros
先说说RAC中必须要知道的宏
- RAC(TARGET,[KEYPATH,[NIL_VALUE]])
使用:
作用是观察TARGET的KEYPATH属性,相当于KVO,产生一个RACSignal
最常用的使用,和RAC宏绑定属性:
上面的代码将label的输出和model的name属性绑定,实现联动,name但凡有变化都会使得label输出
上面的代码将label的输出和model的name属性绑定,实现联动,name但凡有变化都会使得label输出
intcount=Metamacro_at(20,a,c,1)3. 再看Metamacro_at的定义:
intcount=Metamacro_at20(a,1);5. 再看Metamacro_at20这个宏干的事儿:
intcount=Metamacro_head(3,serif;font-size:14px;line-height:25.2000007629395px;">
7. 这个Metamacro_head:
intcount=3;大功告成。反正我看完之后感觉挺震惊,宏还能这么用,这样带来的好处不止是将计算在预处理时搞定,不拖延到运行时恶心cpu;但更重要的是编译检查。比如某些可变参数的实现要求可以填2个参数,可以填3个参数,其他的都不行,这样,也只有这样的宏的实现,才能在编译前就确定了错误。除了上面,还有一个神奇的宏的使用探究一下,关键的关键是如下一个宏:
先不管”??????”是啥,这里不得不说C语言中一个不大常见的语法(第一个忽略):inta=0,b=0;
intc=((void)a,serif;font-size:14px;line-height:25.2000007629395px;"> 再看上面简化的keypath2宏,返回的就是PATH的字符串字面值了(单#号会将传入值转成字面字符串)