如果不加入MAS_SHORTHAND_GLOBALS 那么equalTo代表的是一个函数 这个函数还没有组装数据结构
如果加入了MAS_SHORTHAND_GLOBALS 那么equalTo就是一个宏 会调用mas_equalTo进行数据的包装 包装后就可以响应所有的数据类型
MASBoxValue包装宏会调用inline函数 inline函数里会判断是否为id类型 如果为id类型直接返回。
函数与宏名字重复,作用是在预编译阶段用宏来替换函数名,这种做法在预编译后替换为宏内容,这样就没有标识符冲突。
这样做的好处是可以在后期版本维护时,一直调用函数的名字,其实调用的是宏,由宏来替换实现。(有点像是method swizzing)。
网友评论