swift使用pod导入时,扩展/类别的导入问题

问题描述:

最近在接入某个公司的库时,他们提供自己的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无法识别这个分类中的方法,想调用该方法的时候,会提示无此方法。

解决方法:

  1. 新建oc桥接头
    (参考:https://www.jianshu.com/p/1f084b2f4a8d)
  2. 桥接头中加入import该扩展头文件:
#import "TestClass+Internal.h"
  1. 出现新问题:


    image.png

    xcode提示找不到该头文件

解决:

工程Build Settings中搜索:header search:
修改User Header Search Paths为$(SRCROOT),并修改为recursive


image.png

再build,就可以调用该方法了

理解:

加了设置之后,会递归的去搜索工程下的头文件,就可以找到桥接文件中引入的第三方库的头文件,但是因为要去递归搜索,之后的编译速度就会变慢,尤其是工程越来越大,速度就越明显

你可能感兴趣的:(swift使用pod导入时,扩展/类别的导入问题)