美文网首页Mac 开发
iOS OC和Swift混编与管理多个Target

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

作者: jsone | 来源:发表于2020-05-13 10:37 被阅读0次
    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)

    相关文章

      网友评论

        本文标题:iOS OC和Swift混编与管理多个Target

        本文链接:https://www.haomeiwen.com/subject/hxaxnhtx.html