oc组件化项目与swift混编

记录一下初学swift遇到的问题~

项目背景:service-protocol类型的组件化。在组件A中混编加入swift文件。


步骤:target设置SWIFT_VERSION

podfile里添加use_modular_headers!


问题:在Bridging-Header.h里引入了头文件,但是在.swift里还是不能使用

原因:在主工程里才在Bridging-Header.h里引入需要的头文件,在组件中只需要在.swift文件里import头文件


问题:有部分方法没有提示,也无法调用

原因:方法里面带有.swift文件里没有import的参数类型


问题:需要在组件A的 .swift 文件中调用组件B的协议方法,如果组件A依赖的是组件B的 protocol 就 import 不了,如果是依赖的组件就可以 import

原因:swift 里一个 module 必须要有一个实现文件,但是只有协议的.h文件那么没法形成一个 module 

解决方案:加一个 协议.m 文件就可以 import 协议了


问题:无法调用 + (instancetype)manager

原因:Xcode 限制了 swift 对 OC 初始化相关方法的调用,+ (instancetype)manager 写法会被忽略。

解决方案:使用 Xcode 认可的关键字 default、singleton、shared 为前缀声明方法名。


问题:

这行代码崩溃了

原因:UICollectionView API 设计中不让直接使用 init 方法,因为 collectionView 布局需要 layout 来实现

解决方案

不要直接x()

你可能感兴趣的:(oc组件化项目与swift混编)