一、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 ,就先设置OC调用swift文件
在桥接文件 导入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 

转载于:https://www.cnblogs.com/yujidewu/p/7497556.html

OC与swift相互调用相关推荐

  1. Swift学习Day01(Object_c 与Swift的相互调用 )

    为什么80%的码农都做不了架构师?>>>    从今天开始: 学习一门新门的语言Swift,之前常用的语言  java .object-c:相信 学起swift来,也会很快的: 之前 ...

  2. swift 打包sdk_在封装SDK中Swift和OC混编之相互调用

    oc和swift混编之相互调用.jpg 在非SDK中: 1.swift调用oc 步骤: 创建 工程名-Bridging-Header.h 放入oc的头文件,swift即可调用 在swift项目中或者在 ...

  3. Swift类与OC类方法相互调用的

    2019独角兽企业重金招聘Python工程师标准>>> 收集整理,希望对大家有帮助 1.OC调用Swift实例方法 例如在ViewController.m类里调用Swift的logM ...

  4. Swift和OC文件间的相互调用

    2019独角兽企业重金招聘Python工程师标准>>> 公共文件/桥接的方法 2016/1/26         13:33 Swift使用OC文件方法 看完上面内容之后,你只需要这 ...

  5. 转载 iOS js oc相互调用(JavaScriptCore) --iOS调用js

    iOS js oc相互调用(JavaScriptCore) 从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了. 下面我们就简单了解一下这个框 ...

  6. swift项目调用OC库 和OC项目 在swift文件里面全局调用OC库

    最近比较清闲,就把以前学习的过程记录下吧,多少年后如果能在互联网上找到自己的痕迹,想想还是一件蛮值得高兴的事情. 正好这两天加了一个swift学习群想继续学习swift,发现好多swift初学者,在混 ...

  7. swift项目调用OC代码,OC项目调用swift代码

    swift调用oc 在一个 Swift 开发的工程中可以通过两种方法来生成桥接文件. 第一种是,直接拖拽 OC 文件到工程中,此时系统会询问是否生成桥接文件,如图: 选择 "Create B ...

  8. 关于用OC创建的项目调用swift代码

    关于用OC创建的项目调用swift代码 之前用的都是swift的项目去混编OC去调用,最近公司在开发新项目,主体还是用的OC,但是我希望用swift来开发,所以就只能混编,但是遇到了OC的项目如何调用 ...

  9. IOS开发之OC-Switf 混编 -(OC 引 Swift 文件)

    上篇文章我们介绍了Swift 怎么引 OC 文件接来我们开始OC 引 Swift  文件. (一)OC 引 Swift  文件 1.创建 Demo ( 这个 Demo 名称一定要记住) 2.创建 Sw ...

最新文章

  1. [敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum
  2. 学习笔记Hadoop(四)—— Hadoop集群的安装与部署(1)—— 虚拟机安装、java安装
  3. 【MFC】自绘对话框动画效果的状态栏
  4. edittext 属性
  5. 零基础编程入门基础语句!小白必点,大牛绕道!
  6. redhat7 常用命令
  7. ValidateInput(false)与this.ValidateRequest = false无效的解决方案
  8. Linux IO模式和select,poll,epoll解释
  9. Base64 编码/解码器
  10. 已锁定 java.lang.Object@25ff46f5
  11. 我们通过一个服务器程序,以研究backlog参数对listen系统调用的影响,运行截图如下...
  12. 机器学习第六回(完结篇)
  13. 研究学习时用到的软件
  14. c语言怎么把字符串转数组,【转】C语言 字符数组与字符串
  15. 文字输入效率神器:输入法辅助工具 KeyboardHolder
  16. 学习方法和学习经验总结
  17. 公路路基路面回弹弯沉检测技术(转载)
  18. 去掉台电U盘加密大师
  19. 马桶品牌十大排名榜2022 马桶什么牌子好又实惠
  20. floyed 4.9

热门文章

  1. Android10 编译错误
  2. 抑或运算符(位运算和逻辑运算符详解)----Java
  3. h5首页加载慢_为什么你做的H5开屏那么慢?H5首屏秒开方案探讨
  4. 《疯狂动物城》观影感受
  5. Codeup 小白鼠排队
  6. ES-分词器(Analyzer)
  7. Linux ps命令和pstree命令
  8. 文件新旧判断和字符串判断
  9. SEO优化人员分析IIS日志方法详解
  10. 手把手教你如何推广博客网站