私有CocoaPods库使用二

目的

优先于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源码

私有CocoaPods库使用二_第1张图片
源码

解决方法

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'}

你可能感兴趣的:(私有CocoaPods库使用二)