美文网首页
Swift、OC混用

Swift、OC混用

作者: z4ywzrq | 来源:发表于2019-12-11 17:11 被阅读0次

原文链接:http://yupeng.fun/2019/12/11/swift-oc/

简介

本文介绍一下,Swift、OC 的互相调用的方法。
两种情况,OC 中调用 Swift 的情况,和 Swift 中调用 OC 的情况。本文是在当前最新的环境下的操作,Swift 5、Xcode 11.3。

1、OC 中调用 Swift 的情况

在 OC 的项目中新建一个 Swift 的文件,在创建的同时,Xcode 会弹出提示是否创建桥接文件,选择创建,然后会发现 Xcode 会自动创建一个桥接文件 xxx-Bridging-Header.h

然后在 OC 的代码中导入头文件 #import "xxx-Swift.h" , 这个是 Xcode 自动生成的 Swift 转 OC 的接口头文件,项目名称命名,"项目名-Swift.h",这个在工程配置 Build Settings 中 Swift Compiler - General,可以看到。导入后,在 OC 文件中就可以使用 Swift 了。
如果出现报错,'xxx-Swift.h' file not found 需要设置一下配置信息,targets -> Build Settings -> 搜索 packaging 找到 Defines Module 设置为 Yes,然后重新编译就会成功了。

然后就是在 Swift 文件中编写代码,这里要注意想要在 OC 中使用 Swift 中的类,需要继承自 NSObject,属性和方法要想在 OC 中使用需要加上 @objc。
在 Swift 4 之前,如果你用 Swift 写的 class 是继承自 NSObject 的话,Swift 会默认自动为所有的非 private 的类和成员加上 @objc。
另外,如有需求需要 OC 和 Swift 中使用不一样的方法名或者类名,可以使用 @objc(xxx) 转换成希望用到的名字。

//swift 文件
import Foundation

class Person: NSObject  {
    @objc var name: String?
    var age: Int?
    
    @objc func sayHello(name: String) {
        print("hello \(name)")
    }
    
    @objc(greeting:)
    func 打招呼(名字: String) {
        print("你好,\(名字)")
    }
    
}

//在 OC 中调用
#import "xxx-Swift.h"
Person *p = [[Person alloc] init];
[p sayHelloWithName:@"abc"];
[p greeting:@"123"];

点击导入的头文件,#import "xxx-Swift.h",跳转进去可看到系统将 Swift 转换后的代码:

2、Swift 中调用 OC 的情况

在 Swift 的项目中,新建一个 OC 的文件,同样也会创建一个桥接文件 xxx-Bridging-Header.h,在这个桥接文件用来导入要暴露给 Swift 要用的头文件。

创建好 OC 文件后,在 xxx-Bridging-Header.h 导入 OC 的头文件,然后再 Swift 代码中就可以使用了。

3、可能遇到的问题

在从 Swift 低版本升级的时候,可能会报错:


这是需要设置一下:


相关文章

  • Swift、OC混用

    原文链接:http://yupeng.fun/2019/12/11/swift-oc/[http://yupeng...

  • oc与swift混用编程,以及block,闭包的使用方法

    ##oc与swift混用编程,以及block,闭包的使用方法 @interfaceViewController :...

  • OC与swift混用

    一、当前工程使用OC语言 1、OC使用swift文件 特别提醒:CToolDemo-Swift.h文件是创建swi...

  • 零碎整点-1

    一、C和OC如何混用,C++与OC怎么混用?实现文件的拓展名.m改成.mm即可实现C文件与OC文件的混用。但是cp...

  • 组件化开发

    一.初始化组件 二、提交远程厂库 三、私有库 ARC引用MRCw文件 四、私有库oc swift混用 五、添加...

  • 25.OC和Swift混用

    在SWIFT中调用OC,需要先创建桥接头文件,当我们在OC项目中创建SWIFT文件或SWIFT项目创建OC文件时,...

  • Swift与OC混编

    标签:Swift 在Swift中调用OC 首先创建OC/Swift工程 然后创建swift/OC文件,Xcode会...

  • oc Swift 混编

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

  • ios oc和swift混合使用,桥接

    swift创建oc自动生成Bridging-Header,放入oc头文件,swift即可使用oc使用swift需要...

  • 基础绘制

    1.基础画线OC: swift: 2.画弧线OC Swift 3.画圆(椭圆)OC Swift 4.画弧OC Sw...

网友评论

      本文标题:Swift、OC混用

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