cot*_*ton 6 module objective-c clang
例如,我们有一个 pod 'Dependency3' 声明为 A 类
@interface A : NSObject
- (void)test;
@end
Run Code Online (Sandbox Code Playgroud)
pod 'Dependency1' 声明为 B 类和 A 类类别
@interface B : NSObject
@property (nonatomic, copy) NSString *bText;
@end
@interface A (Dep1)
@property (nonatomic, copy) NSString *aTextDep1;
@end
Run Code Online (Sandbox Code Playgroud)
pod 'Dependency2' 声明了 A 类和 B 类类别
@interface A (Dep2)
@property (nonatomic, copy) NSString *aTextDep2;
@end
@interface B (Dep2)
- (NSString *)bTextDep2;
@end
Run Code Online (Sandbox Code Playgroud)
并且依赖关系没有问题:
Dependency2 -> Dependency3 & Dependency1
Dependency1 -> Denpendency3
Run Code Online (Sandbox Code Playgroud)
在podfile中,我们启用其中一些的modular_headers
pod 'Dependency1', :path => './Dependency1', :modular_headers => true
pod 'Dependency2', :path => './Dependency2', :modular_headers => true
pod 'Dependency3', :path => './Dependency3'
Run Code Online (Sandbox Code Playgroud)
现在,如果您在主项目或另一个新 Pod 中使用 A 类和 B 类,编译器会告诉您
Definition of 'A' must be imported from module 'Dependency1.A_Dep1' before it is required
Run Code Online (Sandbox Code Playgroud)
在清理构建文件夹和模块缓存文件夹后,此问题有时会消失。
这个简单的示例是根据我的案例进行简化的,该案例是在一个带有 objc 和 swift 代码的大型基于组件的项目中找到的。
最重要的是为什么会发生这种情况,也许是模块映射的包含顺序或其他?如果有人能帮助我,我将不胜感激。
| 归档时间: |
|
| 查看次数: |
1576 次 |
| 最近记录: |