Mac 开发

iOS OC和Swift混编与管理多个Target

2020-05-13  本文已影响0人  jsone
OC和Swift混编

一、简介

Swift作为一门新语言已经以高效和简洁俘获众多开发者的心,然而她还处于发展阶段,许多第三方库并不是都有Swift版,而且许多旧的项目用的都是OC,所以用OCSwift混编是许多项目正在使用的方法。TargetXcode功能强大的体现,如果我们需要使用同一套代码实现不同配置,例如不同的bundleIDapp名称、appicon等,发布到不同平台iPhoneiPad,就可以通过新建target来实现同一套代码不同配置的管理。

二、OCSwift混编

1、OC工程中混编Swift语言,新建swift文件

新建HomeController.swift文件

2、点击Create按钮,Xcode会弹窗提示是否创建Objective-C桥接头文件

创建Objective-C桥接头文件

点击Create Bridging Header按钮创建,即在swift文件相同目录创建了Objective-C桥接头文件

创建完成

Swift中调用OC:将Swift中需要用到的头文件添加到Objective-C桥接头文件中
OC中调用Swift:将头文件"工程名称-Swift.h"导入需要调用到的文件中

3、需要在target中配置的参数

设置可定义模块
桥接文件的设置信息

三、添加Target

1、选中targetCommand+D复制target或者右击菜单选中Duplicate

右击选中Duplicate
复制出一份target

2、双击target重命名

修改target名称

3、修改scheme名称

打开管理scheme

选中scheme,然后在点击一次(不是双击)

选中scheme
进入编辑状态
进入编辑状态
修改完成
查看scheme

当我们新建target的时候会自动生成一个与target同名的scheme,我们可以根据需要修改scheme的名称,如果只有一个对应scheme最好改为和target同名

添加完target我们会发现,swift的桥接头文件名称跟着target的名称变化

swift的桥接头文件

原来swift桥接文件与target绑定的

swift桥接文件与target绑定

这时编译新建的PrivatePodTest报错

编译新建的PrivatePodTest报错

提示不存在PrivatePodDemo-Swift.h文件

我们可以通过新建一个头文件Swift.h使用条件编译来包含swift桥接头文件
新建头文件Swift.h,注意两个target都要勾选

新建头文件Swift.h

在新建的目标PrivatePodTest添加TEST预编译标识符,Debug模式和Release模式都要加

添加预编译标识符

Swift.h文件中添加条件编译代码如下

#ifdef TEST
#import "PrivatePodTest-Swift.h"
#else
#import "PrivatePodDemo-Swift.h"
#endif

OC需要调用Swift的文件中换成导入Swift.h头文件,这时两个target都编译成功了

四、Podfile修改

platform :ios,'8.0'

target 'PrivatePodDemo' do
   pod 'MJExtension'
   pod 'YYKit'
end

target 'PrivatePodTest' do
   pod 'MJExtension'
end

参考文章:
Swift 中预编译(Active Compilation Conditions)

上一篇 下一篇

猜你喜欢

热点阅读