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

   2023-02-07 学习力0
核心提示:目录背景:解决方案:OC调用Swift:Swift调用OC:坑:背景:iOS工程中实现的OC和Swift混编的方案和实现步骤已经很多了,在此不做赘述,本篇文章需要描述的是实现在Framework下的混编。解决方案:必要的设置(Framework Target对应的BuildSetting):Defines M

背景:

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(设置后编译会报错,后面会给出解决方案)

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

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

OC调用Swift:

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

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

Swift类定义

#import "ProductName/ProductModuleName-Swift.h"

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

一般默认为framework的名称

Swift调用OC:

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

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

在这个桥接文件里面引用你想暴露给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中

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

设置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的混编方案的详细内容,更多关于Framework OC Swift混编的资料请关注其它相关文章!

原文地址:https://juejin.cn/post/7185901734563151930
 
标签: Framework OC Swift 混编
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • iOS打包framework - Swift完整项目打包Framework,嵌入OC项目使用
    iOS打包framework - Swift完整项目打包Framewor
    场景说明:-之前做的App,使用Swift框架语言,混合编程,内含少部分OC代码。-需要App整体功能打包成静态库,完整移植到另一个App使用,该App使用OC。-所以涉及到一个语言互转的处理,以及一些AppDelegate的代码减除变化。 --------------------------------
    02-09
  • brew update失败提示:/System/Library/Framewo
    情况大概是这样的:执行sudo brew update之后,提示: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- utils/popen (LoadError)from /System/L
    02-09
  • ios开发之--/System/Library/Frameworks/Ruby.f
    有一段时间没有用pod了,突然报了个这种错误,查了下,原来是没有更新pod,1,更新gem:sudo gem update --system2,查看gem源是否是最新的:gem sources -l3,升级cocoapods:sudo gem install -n /usr/local/bin cocoapods --pre4,查看升级后的cocoapods
    02-09
  • iOS /System/Library/Frameworks/Ruby.framewor
    iOS 项目文件下 pod install出现: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: bad interpreter: No such file or directory解决方式:1.输入 gem sources -a https://gems.ruby-china.com/ 回车2.pod install 
    02-09
  • ios oc调用swift framework
    1.oc 调用swift/*oc调用swift,project name为DeomOC: 1.oc工程DemoOC中显式创建一个swift文件,生成DemoOC-Bridging-Header.h 2.#import "DemoOC-Swift.h" https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/Mi
    02-09
  • .NET/VB.NET: solving the error “The system
    Source LinkBumped into this error a while ago in Visual Studio 2010:KindErrorNumber80DescriptionUnable to open module file ‘C:\Users\username\AppData\Local\Temp\.NETFramework,Version=v4.0.AssemblyAttributes.vb’: The system cannot find the
    02-09
  • RobotFramework测试框架创建远程库Remote,并实现调用Ruby关键字接口
    RobotFramework测试框架创建远程库Remote,并实
    RobotFramework测试框架调用Ruby用户数据准备接口   一、安装RF Remote远程控制gem包 robot_remote_server二、创建远程Library服务在ruby环境完整的机器的上创建remote_library.rb文件,内容如下:  然后 ruby remote_library.rb 运行脚本;远程robot服
    02-08
  • 解决-bash: /usr/local/bin/pod: /System/Libra
    今天在更新Mac系统之后,在终端上输入pod search之后,终端上输出:-bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby: bad interpreter: No such file or directory解决方法:终端输入:sudo gem install -n
    02-08
  • Python3.9环境搭建RobotFramework的详细过程
    Python3.9环境搭建RobotFramework的详细过程
    目录Python3.9.9+RobotFramework环境搭建一、Python安装二、RobotFramework安装三、WxPython安装四、RIDE安装五、Selenuim2library安装六、robotframework-appiumlibrary安装七、robotframework-databaselibrary安装八、robotframework-requests安装九、基于
  • go web framework gin 路由表的设计
    在上一篇go web framework gin 启动流程分析这一篇文章中,我分析了go gin启动的过程,在这一篇文章中我将继续上面的分析,讨论gin 中路由表是如何设计的?首先查看engine.handleHTTPRequest() 这个方法的定义:func (engine *Engine) handleHTTPRequest(c *C
    02-08
点击排行