OC和Swift混编Frameowork优雅指南

作者: 治部少辅 | 来源:发表于2019-04-04 14:37 被阅读1次
cover
本文主要参考了优雅地开发Swift和Object C混编的Framework。不过实际发现,完全按照文章里面”优雅的解决方案“里面的说法操作,还是没法成功。我这里根据实际情况作出了调整。
  1. 参考的文章中在“优雅的解决方案”这个section之前的内容都是好用的,你可以用用来创建一个兼容OC和Swift的Cooca Touch Framework。
  2. 这里说的“优雅”,指的是控制OC部分接口保留的问题(详情可以参考原文部分)

原文里面只说了具体的操作步骤,没有高屋建瓴地说出这种方法的实际思路:事实上,采用module.modulemap的方法是将OC部分打包成一个可以使用Swfit语句进行导入(import)的模块。以这个视角,我们再来梳理一下操作步骤:

新建一个module.modulemap文件

文件里的内容如下:

module OCSource [system] {
    //由于module.modulemap和OCSource.h是在同一个文件夹的,如果不是同一个,路径要写全
    header "OCSource.h"
    export *
}

有一个容易犯错的问题是将这里的模块名字, OCSource命名为了Cocoa Touch Framework的名字。这样会导致编译出错,错误信息会提示你Module名字重复定义。这里的名字要区别的Framework的名字,具体是什么可以自己自由选择。不过推荐和头文件的名字一致

后一步操作是把module.modulemap的路径添加到Build Settings的Import Paths中,这是为了让我们在Swift里面import这个module的时候能够找到目标.

Import Paths in Build Settings

那么,这里的$(SRCROOT)/MixFramework其实就是指的module.modulemap的路径。

OCSouce.h文件的权限改为project

Header Visibility Settings

这可以让OCSource.h不再对外可见。
然后,删除MixFramework.h(umbrella header)中#import 的OC header。


原文的内容到此结束,但是其实还是不够的。这时候如果编译,会发现你在Framework内部的Swift使用OCSource的地方都会报错说OCSource不存在。因为将OCSource.h从umbrella header中删除之后Swift就无法看到这个文件了。然而,通过module.modulemap文件我们将OCSource.h及相关的OC文件打包成了了一个Swift模块,因此我们可以在Swift代码中import进来:

import OCSource

在报错的Swift文件中添加这个导入,就可以解决这个问题了.

相关文章

  • OC和Swift混编Frameowork优雅指南

    参考的文章中在“优雅的解决方案”这个section之前的内容都是好用的,你可以用用来创建一个兼容OC和Swift的...

  • Swift(总)

    Swift目录如下: Objective-C和Swift混编指南-s混编-OC&Swift[https://www...

  • oc Swift 混编

    oc Swift 混编 oc 项目 混编Swift1.1 oc 调用 Swift 的类 和 方法步骤: ...

  • OC和Swift混编一

    OC工程下混编 Swift工程下混编请查看OC和Swift混编二 1.建一个OC工程命名为OCTestSwift ...

  • OC和Swift混编二

    Swift工程下混编 OC工程下混编请查看OC和Swift混编一 1.建一个Swift工程命名为SwiftTest...

  • Swift

    混编 15、OC与Swift的混编_海森堡_lichangan的博客-CSDN博客_oc swift 混编[htt...

  • OC和Swift混编手动创建桥接文件及命名空间

    Obj-C混编Swift && Swift混编Obj-C Swift引用OC实现通过桥接头文件,OC引用Swift...

  • OC Swift文件混编

    一.Swift 类可以继承 OC 类,OC 类不能继承 Swift 类。 二.Swift 和 OC 混编 三.两个...

  • Swift 和 OC 混编之 framework

    Swift 和 OC 混编之 framework 在主工程为 Swift 的 framework 中引用 OC 代...

  • Swift和OC混编出现的桥接问题

    1.如果是自己的项目要进行Swift和OC混编 请参考 oc 和 swift混编之自建桥接文件 作者:水墨九 进行...

网友评论

    本文标题:OC和Swift混编Frameowork优雅指南

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