swift 与 OC 之间的调用

这次主要看 在已有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语言出来后,可能新的项目直接使用Swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好...
    疯狂的电脑阅读 2,318评论 0 9
  • 由于公司需要,今天开始学习swift,打算先创建个工程,做基本代码测试,结果刚开始的文件相互调用就遇到了问题,在这...
    琉璃艺术阅读 9,571评论 5 8
  • 一、OC调用swift文件 二、swift调用OC文件 三、注意和总结 添加: 四、自定义桥接文件 一、OC调用s...
    zcwfeng阅读 3,603评论 2 2
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,180评论 4 61
  • 昨天是星期天,晴,不过温度很低! 大街上的人很少,早上上班的时候,路过古城路口,平常都很堵的路,今天竟然没有多少车...
    手机哥阅读 1,341评论 0 0