目的
优先于Masonry的编译定义宏
使用场景
由于项目原因, 必须使用动态库, 所以Podfile
文件中添加了use_frameworks!
. 在使用use_frameworks!
后, Masory
的编译链接优先于PCH
, 所以导致就算在PCH
中加上了这个宏#define MAS_SHORTHAND
也无法使用Masonry
提供的精简写法
场景补充1
use_frameworks!
- 用
CocoaPods
导入swift框架到swift项目和OC项目都必须要use_frameworks!
- 使用
dynamic frameworks
,必须要在Podfile
文件中添加use_frameworks!
场景补充2
只要添加了#define MAS_SHORTHAND
这个宏,就不用带mas_前缀
只要添加了#define MAS_SHORTHAND_GLOBALS
这个宏,equalTo就等价于mas_equalTo
所以项目中一般这么写
// 只要添加了这个宏,equalTo就等价于mas_equalTo 不用@()
#define MAS_SHORTHAND_GLOBALS
// 这个头文件一定要放在上面两个宏的后面
#import <Masonry/Masonry.h>
Masonry
源码
解决方法
podspec
提供了相应的配置
GCC预编译头参数GCC_PREPROCESSOR_DEFINITIONS
#pod中的macro
s.pod_target_xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => 'MAS_SHORTHAND_GLOBALS=1'}
#项目中的macro
s.user_target_xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => 'MAS_SHORTHAND_GLOBALS=1'}