问题描述:
最近在接入某个公司的库时,他们提供自己的git,使用cocoapods集成他们的sdk,发现有个问题:某个类的.m中有个私有初始化方法:
- (instancetype)initWithJSONDictionary:(NSDictionary *)dictionary error:(NSError *__autoreleasing _Nullable *)error
但是又通过写了一个头文件AylaSchedule+Internal.h写了一个该类的扩展:
@interface AylaSchedule (Internal)
- (instancetype)initWithJSONDictionary:(NSDictionary *)dictionary error:(NSError *__autoreleasing _Nullable *)error;
@end
将该方法暴露出来,但是通过pod集成的库,可是使用import来导入module,但是该module无法识别这个分类中的方法,想调用该方法的时候,会提示无此方法。
解决方法:
- 新建oc桥接头
(参考:https://www.jianshu.com/p/1f084b2f4a8d) - 桥接头中加入import该扩展头文件:
#import "TestClass+Internal.h"
-
出现新问题:
xcode提示找不到该头文件
解决:
工程Build Settings中搜索:header search:
修改User Header Search Paths为$(SRCROOT),并修改为recursive
再build,就可以调用该方法了
理解:
加了设置之后,会递归的去搜索工程下的头文件,就可以找到桥接文件中引入的第三方库的头文件,但是因为要去递归搜索,之后的编译速度就会变慢,尤其是工程越来越大,速度就越明显