一、OC调用swift文件

二、swift调用OC文件

三、注意和总结

添加:

四、自定义桥接文件

一、OC调用swift文件

  在OC项目中创建一个swift文件的时候,Xcode 会提示 需要创建一个桥接文件,点确定创建桥接文件,Xcode会自动创建一个桥接文件

名字:工程名-Bridging-Header.h

这个桥接文件是 swift 调用OC文件的时候用的

1、

  进入TARGETS ->Build Settings -> Packaging 中

设置Defines Module为YES

设置 Product Module Name ,也可以不设置,默认为工程的名字。这个在后面会用到

2、

  在swift写一个类

注意这个类一定要继承NSObject,不然在OC中没法用

class hello: NSObject {
    var address : String
    var gender: String
   
    init(address:String,gender:String){
        self.address = address
        self.gender = gender
    }
   
    func method() {
        print("message \(self.address + self.gender)")
    }
}

3、

  在OC需要用到的swift文件中 导入文件 "Product Module Name -Swift.h"  因为 Product Module Name 默认是工程的名字

所以直接导入 #import "工程名-Swift.h"

4、

  记着写完先command +B编译一下,如果没有报错就可以在OC文件调用swift中的类了

hello *helloss = [[helloalloc]initWithAddress:@"上海"gender:@"男"];
[helloss method];

二、swift调用OC文件

  在swift项目中创建一个OC文件的时候,Xcode 会提示创建一个桥接文件 点确定创建桥接文件,Xcode会自动创建一个桥接文件

名字:工程名-Bridging-Header.h

  把swift需要用到的OC文件的头文件放到桥接文件里 工程名-Bridging-Header.h

例如:

1、

这个就是一个OC文件
//#import "sec.h"
#import <UIKit/UIKit.h>
@interface sec : UIViewController
-(void)actionMake;
@end
 

2、

在桥接文件中把需要用到OC的头文件导入进去
#import "sec.h"
 

3、

编译一下,就可以在swift中用swift的语法调用OC文件的方法了
let second = sec()
second.actionMake()

三、注意和总结

注意:

1、OC项目在导入swift文件前 先按照系统提示创建桥接文件,
2、在 targets -> Build Settings -> Packaging  中设置Defines Module 为YES
3、在OC中调用swift文件的时候,swift中的类 要继承NSObject
不然没办法在OC中调用
4、OC中调用swift文件需要导入”工程名 -Swift.h"
     (这个是build Setting -> Packaging->Product Module Name 的名字,而这个属性默认是工程的名字)
5、写完记得command + B 编译 一下
6、swift项目 引用OC文件也需要创建 桥接文件,在这个桥接文件中导入OC文件的头文件
7、桥接文件只有一个,作用只是为了 swift 引用OC文件,OC引用swift 文件虽然也需要创建桥接文件
        但是不需要在桥接文件中 导入swift文件
8、如果一个项目既有OC引用swift 也有swift引用OC ,就先设置swift调用OC文件
     在桥接文件 导入OC文件,OC可以定义PCH文件导入”工程名 -Swift.h" 

四、自定义桥接文件

如果不用Xcode提示创建桥接文件也可以自定义一个桥接文件
1     使用 Header File  把里面的内容清空。
2、 这文件名可以自定义, 一般还是用 工程名-Bridging-Header.h   例如app - file.h
3    然后在 Build Setting -> Swift Compiler - Code Generation中
4、设置Objective-C Bridging Header 为自定义的桥接文件相对于工程的绝对路径,也就是项目总文件夹的路径,如果在第一层,就直接写自定义的桥接文件的名file.h,如果在下一层,文件夹/桥接文件 app/file.h 

OC与swift相互调用的更多相关文章

  1. iOS OC与swift相互调用

    小哥("我"的自称)个人混编的时候喜欢先创建OC项目,然后在项目中创建swift类.这样有个好处就是桥文件可以自动创建的同事路径不需要我手动去写了,另外还有个目的就是现在小哥自我感 ...

  2. JS与原生OC/Swift相互调用总结

    代码地址如下:http://www.demodashi.com/demo/12754.html JS-OC-Swift JS和OC/Swift相互调用,主要总结了JS和OC交互的三种方式 1.使用UI ...

  3. JS代码和OC代码的相互调用

    JS调用OC 很多应用里面或多或少的调用了网页,来达到绚丽的效果,所谓的JS调用OC.....举个例子吧,网页上有个按钮 点击按钮跳转界面,跳转的动作由OC的代码实现. OC调用JS 还是举个例子,我 ...

  4. swift和oc之间的相互调用(block,代理)

    第一:swift->oc 这个相对简单一点, 在自动生成的桥接文件中导入你要掉的oc文件名就可以了, 如果没有生成桥接文件也可以自己手动创建(Header File) 第二:oc->swi ...

  5. iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包

    本文章将从两个方向分别介绍 OC 与 swift 混编 1. 第一个方向从 swift工程 中引入 oc类 1. 1 如何在swift的类中使用oc类    1.2  如何在swift中实现oc的代理 ...

  6. [Swift]在Swift项目中创建桥接头文件,Swift文件和Objective-C文件相互调用

    创建一个Swift项目[demo],以下内容Swift文件和Objective-C文件相互调用都是在Swift项目中. 一.Swift文件调用Objective-C文件 新建文件夹[SupportFi ...

  7. iOS OC和Swift进行互相调用

    有时候 ,我们会涉及到双向混合编程,特别是OC和swift的互相引用. swift调用oc的方法: 1.桥接文件,一般是swift工程,在创建一个oc文件时,系统自动添加(不用改名,直接默认即可) 2 ...

  8. Lua 与 OC 相互调用

    本文主要讲如何完成lua和object-c的相互调用.       lua是一种脚本语言,可以方便的移植到各种宿主语言中,并且可以支持热更新,在游戏开发中也能当做主要的语言来编写游戏的逻辑,但是要接入 ...

  9. swift与OC混编之调用函数

    在桥接头文件里#import oc的.h文件,整个swift工程都能使用该oc文件,在.h里暴露的方法都能被该工程使用 //oc文件 TestOC.h #import @interface TestO ...

随机推荐

  1. 2019 SDN第6次上机作业

    1.作业要求: 作业链接 参考资料: Ryu控制器的API文档:ryu.app.ofctl_rest Ryu的拓扑展示 助教博客:基于RYU restful api实现的VLAN网络虚拟化 2.具体操 ...

  2. GO语言GIN框架入门

    Gin框架介绍 Gin是一个用Go语言编写的web框架.它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍. 中文文档 Gin框架安装与使用 ...

  3. Hadoop(三)—— YARN

    YARN产生的背景 Hadoop相关概念 Hadoop 1.0 由HDFS.MapReduce组成. Hadoop 2.0 克服1.0中HDFS和MapReduce存在的各种问题而提出的. YARN是 ...

  4. 四个大点,搞懂 Redis 到底快在哪里

    来源:https://mp.weixin.qq.com/s/4kPlBE3C6lTuSvt5mY5hUQ 前言 一. 开发语言 二. 纯内存访问 三. 单线程 四. 非阻塞多路I/O复用机制 前言 R ...

  5. 统一异常处理@ControllerAdvice

    一.异常处理 有异常就必须处理,通常会在方法后面throws异常,或者是在方法内部进行try catch处理. 直接throws Exception 直接throws Exception,抛的异常太过 ...

  6. CTF SSRF(服务器端伪造请求)

    目录 CTF SSRF(服务器端伪造请求) 一.概念 二.危害 三.漏洞挖掘与判断 四.相关函数 五.IP绕过 六.Gopher协议 1.使用限制 2.构造payload CTF SSRF(服务器端伪 ...

  7. 基于hive的《反贪风暴4》的影评

    一:将爬虫大作业产生的csv文件上传到HDFS 查看文件中前10条信息,即可证明是否上传成功. 二.对CSV文件进行预处理生成无标题文本文件 创建一个deal.sh,主要实现数据分割成什么样的意思 执 ...

  8. [源码分析]LinkedHashMap

    一个键有序的 HashMap   可以将 LinkedHashMap 理解为 LinkList + HashMap,所以研究LinkedHashMap之前要先看HashMap代码.这里不再赘述.其实L ...

  9. elementui---日期格式的选择

    在用elementui做数据提交的时候,默认的时间格式一个对象,好麻烦,主要对时间进行格式限制,具体方法如下: <el-form-item :label="$t('oneCard.bi ...

  10. [Bayes] Concept Search and LSI

    基于术语关系的贝叶斯网络信息检索模型扩展研究 LSI 阅读笔记 背景知识 提出一种改进的共现频率法,利用该方法挖掘了索引术语之间的相关关系,将这种相关关系引入信念网络模型,提出了一个具有两层术语节点的 ...