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 ...
随机推荐
- golang 性能调优分析工具 pprof(下)
golang 性能调优分析工具 pprof(上)篇, 这是下篇. 四.net/http/pprof 4.1 代码例子 1 go version go1.13.9 把上面的程序例子稍微改动下,命名为 d ...
- 配置redis 4.0.11 集群
配置redis 4.0.11 集群 准备redis 软件和redis配置文件 启动Redis服务 /data/soft/redis/src/redis-check-aof --fix /log/red ...
- IIS误删了默认网站,恢复方法
有时候安装好IIS后,会不小心把IIS的默认网站删除.重新去新建可能会出现一些错误例如"提示文件已存在无法执行"等奇怪的错误,下面是具体的默认网站的恢复方法 找到目录C:\wind ...
- 四单元总结&OO总结
目录 本单元架构总结 第一次作业 第二次作业 第三次作业 架构设计总结 第一单元 第二单元 第三单元 对测试演进 课程收获 改进建议 线上学习体验 本单元架构总结 第一次作业 第一次作业按照UML正常 ...
- gitee 学习笔记
这个流程只能是在自己的测试仓库中联系哟 首先创建一个自己的仓库 接下来安装git客户端,通过gitee官网给了一个例子创建ssh密钥 然后输入命令 get clone 你仓库的https 或者ssh地 ...
- 痞子衡嵌入式:利用i.MXRT1xxx系列内部DCP引擎计算Hash值时需特别处理L1 D-Cache
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是利用i.MXRT1xxx系列内部DCP引擎计算Hash值时需特别处理L1 D-Cache. 关于i.MXRT1xxx系列内部通用数据协处 ...
- nginx+nginx-upsync-module实现配置动态更新
模块微博开源:https://github.com/weibocom/nginx-upsync-module#upsync 实现方案: nginx+consul nginx+etcd Installa ...
- OSPF 综合实验
实验拓扑 实验需求 1.按照图示配置好 IP 地址,PC1 网关指向为 R8 2.OSPF 划分为 4 个区域,其中 192.168.0.0/24,192.168.1.0/24,192.168.2.0 ...
- 13- jmeter性能测试案例
配置原件 HTTP请求默认值 前置处理程序 定时器 取样器 后置处理器:正则表达式提取器 断言 监听器 性能测试流程 1.评估获取性能测试需求(访问量大,操作频繁) 2.确定性能测试目标 : 并发用户 ...
- 【Idea】实用的快捷键清单
1.Ctrl + Shift +i:快速查看某个类/方法 2.Ctrl +:(Ace Jump插件启动) 3.alt+F1:快速查看某个类/方法 所在的包 4.Ctrl +w :选中某个单词 5.Ct ...