OC与Swift混编,三种场景的实现方式
多语言并存时期,混编成为一种必须的方式 ,在多场影中实现OC和Swift语言的并存原来是如此简单
第一种场景,App中实现混编
- 创建桥接文件
*.h
新建一个桥接文件,New File
选择Header File
创建 - 指定桥接文件
project->targets->Build Setting->All->Swift Compilter General->Objective-C-Bridging-Header
指定刚刚的新建的桥接文件
- 导入OC头文件(
*.h
)到桥接文件
如:#import "Log.h"
- 完成调用
在Swift
文件中直接调用
注:在Swift项目中第一次创建OC文件,Xcode
会自动提示创建桥接文件
第二种场景,Framework 中实现混编
- 创建
Famework
创建完成后会生成一个同名头文件*.h
- 将OC头文件(
*.h
)设置为公开头文件
project->targets->Build Phases->Headers->Public
,直接拖入
- 导入OC头文件(
*.h
)到同名头文件
如:#import "Log.h"
- 完成调用
在对外的Swift
文件中直接调用
注:对外的类和方法必须public
标示才可访问
第三种场景,Pod
包中实现混编
在完成第二种场景后,添加*.podspec
文件实现 Pod
包
生成
*.podspec
运行命令pod spec create [name]
生成*.podspec
文件编辑
*.podspec
在*.podspec
中将OC头文件(*.h
)设置为公开头文件
如:spec.public_header_files = "Log.h"
#完整的文件信息
Pod::Spec.new do |spec|
spec.name = "OCSwiftFramework"
spec.version = "0.0.1"
spec.summary = "OCSwiftFramework"
spec.description = <<-DESC
OCSWiftFramework
DESC
spec.homepage = "https://www.ichochy.com" spec.license = "MIT"
# spec.license = { :type => "MIT", :file => "FILE_LICENSE" }
spec.author = { "MLeo" => "iChochy@qq.com" } spec.platform = :osx
spec.osx.deployment_target = "10.10" spec.source = { :git => "https://github.com/iChochy/HelloWorld.git", :tag => "#{spec.version}" } spec.source_files = "**/*.{h,m,swift}"
spec.exclude_files = "Info.plist"
spec.public_header_files = "Flog.h" spec.swift_version = "4.2"
end验证
*.podspec
运行命令pod lib lint
完成验证完成调用
a. 运行命令pod trunk push [NAME.podspec]
完成发布
b.Podfile
中添加pod "[name]"
c. 运行命令pod install
完成pod
安装
d. 安装完成后直接调用
注:可用pod "[name]", :path => "[path]"
本地指定
GitHub:
HelloWorld:https://github.com/iChochy/HelloWorld.git
联系方式:
邮箱:iChochy@qq.com
网站:https://www.ichochy.com
源文:https://ichochy.com/posts/20190904/
OC与Swift混编,三种场景的实现方式的更多相关文章
- Swift语言学习之OC和Swift混编
本文转自http://www.helloswift.com.cn/swiftbase/2015/0112/3469.html iOS OC和Swift混编 1.创建一个swift或者oc的工程:我这里 ...
- OC跟Swift混编
OC项目中使用Swift 本文版权归作者所有,如需转载请联系孟祥月 CSDN博客:http://blog.csdn.net/mengxiangyue 独立博客:http://mengxiangyue ...
- OC与swift混编 #import "项目名-Swift.h"失效问题
由于项目多个环境部署,每次改配置比较麻烦,所以线上环境一个TARGETS,内部环境一个TARGETS, 都知道oc和swift混编的时候,会生成一个'项目名-Swift.h'文件,这个文件是隐式的,需 ...
- IOS --- OC与Swift混编
swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编.这个在IOS8中是允许的. ...
- 【转】IOS --- OC与Swift混编
群里大神发的网址,感觉有用就先收录了,暂时没时间看SWIFT,感觉代码简洁,但是可阅读性不是太高,有些代码让系统去判断类型,同样的,我们看代码的时候也得自己去判断类型,或许看多就习惯了,有时间再说吧, ...
- OC与Swift混编
群里大神发的网址,感觉有用就先收录了,暂时没时间看SWIFT,感觉代码简洁,但是可阅读性不是太高,有些代码让系统去判断类型,同样的,我们看代码的时候也得自己去判断类型,或许看多就习惯了,有时间再说吧, ...
- oc工程中oc、swift混编代码打包成静态framework踩坑笔记
参考资料: https://www.jianshu.com/p/734341f7c242 https://www.jianshu.com/p/55038871e7de 两天时间探索,期间不知道遇到 ...
- oc 和swift混编的时候打包ipa安装不了
做了一个oc项目.里面实用到swift第三方,真机执行的时候是正常的,用企业级证书打包成ipa之后安装完毕之后闪退.通过导出手机log日志发现错误提示: Dyld Error Message: L ...
- iOS开发之-- oc 和 swift混编之自建桥接文件
进行swift开发的时候,oc 的项目已经进行了很长一段时间,所以默认使用Xcode自建的桥接文件的时候,这个桥接文件名称是固定的,放置的目录也是无法更改的,所以我就想自己创建一个桥接文件,然后在ta ...
随机推荐
- Scrum完整项目实例
一.背景 在谈 JIRA 之前,就不得不说说敏捷开发了.正式由于项目是基于敏捷开发进行的,因此才引入了 JIRA 这款适合于敏捷开发的项目管理工具.当然,这里不会大篇章的介绍敏捷开发,之前的文章有详细 ...
- HTTPS证书通过cert-manager自动获取,部署,续期
HTTP-01验证和DNS-01验证 使用cert-manager给阿里云的DNS域名授权SSL证书 第一步:安装cert-manager 配置 CRD kubectl apply -f https: ...
- 现代 CLI 和 GUI 方案指南
原文链接:http://axuebin.com/articles/fe-solution/cli/desc.html,转载请联系 写在前面 提到初始化项目,那就必须提到脚手架这个名词,那为什么这篇文章 ...
- 【NCRE】三级网络技术 选择题易错点记录(1)
部分易错点 连接到一个集线器的多个节点不能同时发送数据帧 嵌入式安装插座用来连接双绞线 异步串行端口 PPP 同步串行端口 PPP/HPLC 对于频繁改变位置并使用DHCP获取IP地址的DNS客户端, ...
- 我与Git的那些破事(上)--代码管理
1. Git是什么? 作为一名程序猿,我相信大家都或多或少接触过git--分布式版本控制软件. 有人说,它是目前世界上最先进的分布式版本控制系统,我想说,是否最先进不知道,但确实好用,实用. 作为一款 ...
- Spring Cloud Alibaba(4)---Nacos(注册中心)
Nacos(注册中心) 有关Spring Cloud Alibaba之前写过三篇文章. Spring Cloud Alibaba(1)---入门篇 Spring Cloud Alibaba(2)--- ...
- JAVAEE_04_Tomcat服务器
Tomcat服务器 * 常用的服务器 - WebLogic服务器 WebLogic是美国bea公司出品的一个application server.BEA WebLogic是用于开发.集成.部署和管理大 ...
- Day16_90_通过反射机制获取某个特定的构造方法
通过反射机制获取某个特定的构造方法 public class ReflectTest13 { public static void main(String[] args) throws ClassNo ...
- Day11_50_SortedMap集合
SortedMap集合 二叉查找树 和 二叉*衡树 二叉查找树是一种有序的树,所有的左孩子的value值都是小于叶子结点的value值的,所有右孩子的value值都是大于叶子结点的.这样做的好处在于: ...
- day-25-类的继承顺序-父类对子类的约束-多态-队列和栈
一.类的继承顺序 只要继承object类就是新式类 不继承object类的都是经典类 在python3 中所有的类都继承object类,都是新式类 在python2 中不继承object的类都是经典类 ...