58同城于 2020 年正式上线首个 Swift/OC(Objective-C,以下简称 OC)项目,与此同时,也在全公司范围内开展了一个多部门协作项目——混天项目,主要目标: 1)一是提供混编的基础设施建设,如提供通过的 Module 化方案; 2)二是扩展各工具链的混编能力,如对无用类检测工具 WBBlades(https://github.com/wuba/WBBlades...
目前微商城项目已经进行了混编项目开发,比如学习中心模块是一个纯 Swift 的二方库,而消息业务模块则是一个 Swift 和 Objective-C 混编的二方库,我们后面会进行越来越多的模块开发用混编的这种形式,新的模块采用 Swift 代码,老的业务还是 Objective-C 不动这种方案。随着 Swift 越来越主流,很多大厂的 App 都用该...
使用Objective-C 对 C++ 业务代码做一层接口封装,提供给 Swift 使用。 由于目前 SDK 本身就支持 C 和 Objective-C 接口,所以上面两种方案本身均是可行的。但因为跨平台 C 语言跟 Swift 之间混编涉及到数据结构的转换,以及缺少一些列的基础组件支持,相当于完全从零开始,工作量相比 Objective-C 来看会大很多。 综...
2.Objective-C Generated Interface Header Name文件 这个文件是混编时,系统生成的Swift文件对应的Objective-C的头文件,具体可以在Targets→Build Settings→Swift Compiler - General→Objective-C Generated Interface Header Name进行配置,默认文件名是工程名-Swift.h,一般不做改动。 在Objective - C工程或者文件使用Swif...
Swift 与 Objective-C 混编优化 2019 年 3 月 25 日,苹果发布了Swift 5.0 版本,宣布了 ABI 稳定,并且Swift runtime 和标准库已经植入系统中,而且苹果新出文档都用 Swift,Sample Code 也是 Swift,可以看出 Swift 是苹果扶持与研发的重点方向。 国内外各大公司都在相继试水,只要关注 Swift 在国内 iOS 生态圈现...
通常在 Swift/OC 混编工程中会自动或手动在当前pod添加加一个桥接文件,如 PodC-Bridging-Header.h,配置当前 pod 中 Swift 需要引用的 OC 文件,形式如下所示。 这样可以达到编译的目的,但是由于依赖的组件都是在桥接文件中统一配置,对于每个 Swift 文件依赖了哪些 pod 组件,实际上并不清楚,而且 Swift 中每次修改...
混编分为两种情况: 1.在Swift工程中使用Objective-C文件 2.在Objective-C工程中使用Swift的文件 Swift中访问OC文件: 1. 添加桥接文件projectName-Bridging-Header.h 桥接文件“ProjectName-Bridging-Header.h”,在首次创建其他文件的时候,会自动生成。如果不小心删除后,也可以手动添加,不过名字必须是“ProjectName-Brid...
1. 在同一个工程中的混编 Swift访问Objective-C:需要添加桥接文件TargetName-Bridging-Header.h,并在桥头文件中导入需要暴露给Swift的ObjC类。 Objective-C访问Swift:系统自动生成TargetName-Swift.h文件,在ObjC类中导入该文件即可访问Swift类中暴露给ObjC的属性和方法。
通常在 Swift/OC 混编工程中会自动或手动在当前pod添加加一个桥接文件,如 PodC-Bridging-Header.h,配置当前 pod 中 Swift 需要引用的 OC 文件,形式如下所示。 这样可以达到编译的目的,但是由于依赖的组件都是在桥接文件中统一配置,对于每个 Swift 文件依赖了哪些 pod 组件,实际上并不清楚,而且 Swift 中每次修改...
Swift语言具有语法简洁、多范式、健壮性强、性能高等诸多优点,如今越来越多的开发者投入到了Swift的怀抱,快手海外客户端团队在Kwai-Pro、MV Master、Zynn等项目中也积累了不少Swift和OC混编的经验。为了有效提高编译效率,团队又进一步展开了对Swift/OC二进制化混编的探索,解决了实践中碰到的诸多问题。本文将和大家分享...