Framework中实现OC和Swift的混编方案

 更新时间:2023年01月08日 14:28:51   作者:bug改不停  
这篇文章主要为大家介绍了Framework中实现OC和Swift的混编方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

背景:

iOS工程中实现的OC和Swift混编的方案和实现步骤已经很多了,在此不做赘述,本篇文章需要描述的是实现在Framework下的混编。

解决方案:

必要的设置(Framework Target对应的BuildSetting):

Defines Module - YES

Product Module Name - framework名称

Install Objective-C Compatibility Header - YES

Objective-C Generated Interface Header - framework名称-Swift

Objective-C Bridging Header - framework名称/ProductModuleName-Bridging-Header.h(设置后编译会报错,后面会给出解决方案)

桥接文件-Swift调用OC时可以在该文件中添加OC头文件

OC调用Swift:

Swift类使用@objcMembers进行修饰,继承自NSObject或其子类

Swift类定义

#import "ProductName/ProductModuleName-Swift.h"

一般默认为framework的名称

Swift调用OC:

在ProductModuleName-Bridging-Header.h文件中引入Swift需要调用的OC头文件

在这个桥接文件里面引用你想暴露给Swift调用类的头文件

说明:这个桥接文件需要自己手动创建

坑:

在OC类中引用Swift编译之后的头文件,必须采用"ProductName/ProductModuleName-Swift.h"方式,使用ProductModuleName-Swift.h方式,会提示找不到该文件

如果未设置Objective-C Bridging Header,引用ProductName/ProductModuleName-Swift.h头文件之后依然无法在OC类中调用Swift类,因为设置Objective-C Bridging Header后,才会编译Swift类到ProductModuleName-Swift.h中

设置Objective-C Bridging Header后Swift类被翻译成OC类,才可以被OC调用

设置Objective-C Bridging Header后编译报错using bridging headers with framework targets is unsupported,解决方案就是修改ProductModuleName.h这个文件名称为其他名称,比如:ProductModuleNameHeader.h

这个文件改动之后可能会出现头文件引用导致的问题,需要自己动手解决

以上就是Framework中实现OC和Swift的混编方案的详细内容,更多关于Framework OC Swift混编的资料请关注脚本之家其它相关文章!

相关文章

  • Objective-C计时器NSTimer学习笔记

    Objective-C计时器NSTimer学习笔记

    这篇文章主要为大家介绍了Objective-C计时器NSTimer的学习笔记,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 详解iOS自定义UITabBar与布局

    详解iOS自定义UITabBar与布局

    本篇文章给大家详细分析了iOS自定义UITabBar与布局的实际操作过程以及相关代码分享,一起学习下。
    2018-02-02
  • iOS 沙盒图片保存读取实例

    iOS 沙盒图片保存读取实例

    下面小编就为大家分享一篇iOS 沙盒图片保存读取实例,具有很的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • 一文详解NSSecureCoding真的安全吗

    一文详解NSSecureCoding真的安全吗

    这篇文章主要为大家介绍了NSSecureCoding安全深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • iOS DispatchSourceTimer 定时器的具体使用

    iOS DispatchSourceTimer 定时器的具体使用

    定时器在很多地方都可以用到,本文主要介绍了iOS DispatchSourceTimer 定时器的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • iOS中多线程的入门使用教程(Swift)

    iOS中多线程的入门使用教程(Swift)

    这篇文章主要给大家介绍了关于iOS中多线程入门使用的相关资料,一个进程中可以开启多条线程,每条线程可以并行执行不同的任务,本文通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-11-11
  • iOS视频中断后台音乐播放的处理方法

    iOS视频中断后台音乐播放的处理方法

    这篇文章主要给大家介绍了关于iOS视频中断后台音乐播放的处理方法,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • iOS中的音频服务和音频AVAudioPlayer音频播放器使用指南

    iOS中的音频服务和音频AVAudioPlayer音频播放器使用指南

    这里我们要介绍的是AVAudio ToolBox框架中的AudioServicesPlaySystemSound函数创建的服务,特别适合用来制作铃声,下面就简单整理一下iOS中的音频服务和音频AVAudioPlayer音频播放器使用指南:
    2016-06-06
  • iOS自定义UIButton点击动画特效

    iOS自定义UIButton点击动画特效

    这篇文章主要为大家详细介绍了iOS自定义UIButton点击动画特效,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • 如何使用IOS实现WIFI传输

    如何使用IOS实现WIFI传输

    这篇文章主要介绍了如何使用IOS实现WIFI传输,对局域网传输和HTTP感兴趣的同学,可以参考下
    2021-04-04

最新评论