美文网首页
swift 与 OC 之间的调用

swift 与 OC 之间的调用

作者: SuChAChAoS | 来源:发表于2017-07-28 11:37 被阅读0次

    这次主要看 在已有OC项目中添加swift文件

    一、swift调用OC

    首先添加swift:

    系统弹出询问框,点击Create Bridging Header按钮,创建桥接文件,桥接文件名称为:

    “项目名-bridging-header.h”

    该桥接文件的作用:swift 调用 OC。

    swift需要的OC类,均需要在桥接文件中import

    设置桥接文件路径:

    Build Settings->Swift Compiler-General->Objective-C Bridging Header 

    该路径可以为虚拟路径 也可以为实际路径

    在swift中引用OC第三方库:

    以MJRefresh为例:

    Add Files之后,点击Options,勾选Copy items if needed、Create groups

    点击add

    添加第三方库之后,需要更改search paths

    Building Settings -> Search Paths -> User Header Search Paths

    双击空白处,填写${SRCROOT},选择recursive,意为添加了根目录下所有文件

    更改之后如图显示,** 意为根目录下的所有文件

    注意!!!

    swift 中引入OC第三方库的时候

    要通过 Add Files to 来添加

    否则项目容易找不到第三方库文件,编译不过出现如下错误:

    _OBJC_CLASS_$_文件名,No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386)

    二、OC调用Swift:

    OC调用swift主要依托的桥接文件是:“项目名-Swift.h”

    该桥接文件作用:OC调用Swift


    配置:

    Building Settings -> Packaging 

    将Defines Module 设置为Yes

    Product Module Name 为当前工程名称,它也关系着桥接文件的名称

    若Product Module Name 为XXX,则桥接文件名为:“XXX-Swift.h”

    该文件为系统自己创建,并没有显示的展示出来,通过command+左键 可以查看:

    注意!!!

    “项目名-Swift.h”文件只能在.m文件中引用,在.h文件中引用会报错!

    原因未知,我初步估计可能是Build Phases -> Compile Sources 中,编译源只能添加.m文件,调查清楚后再做具体修改。

    相关文章

      网友评论

          本文标题:swift 与 OC 之间的调用

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