多语言并存时期,混编成为一种必须的方式 ,在多场影中实现OC和Swift语言的并存原来是如此简单

第一种场景,App中实现混编

  1. 创建桥接文件*.h

    新建一个桥接文件,New File 选择 Header File 创建
  2. 指定桥接文件

    project->targets->Build Setting->All->Swift Compilter General->Objective-C-Bridging-Header 指定刚刚的新建的桥接文件

  3. 导入OC头文件(*.h)到桥接文件

    如:#import "Log.h"

  4. 完成调用

    Swift文件中直接调用

注:在Swift项目中第一次创建OC文件,Xcode会自动提示创建桥接文件

第二种场景,Framework 中实现混编

  1. 创建Famework

    创建完成后会生成一个同名头文件*.h
  2. 将OC头文件(*.h)设置为公开头文件

    project->targets->Build Phases->Headers->Public,直接拖入

  3. 导入OC头文件(*.h)到同名头文件

    如:#import "Log.h" 
  4. 完成调用

    在对外的Swift文件中直接调用



    注:对外的类和方法必须 public 标示才可访问

第三种场景,Pod 包中实现混编

在完成第二种场景后,添加*.podspec文件实现 Pod 包

  1. 生成 *.podspec

    运行命令 pod spec create [name] 生成 *.podspec 文件

  2. 编辑 *.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
  3. 验证 *.podspec

    运行命令 pod lib lint 完成验证

  4. 完成调用

    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混编,三种场景的实现方式的更多相关文章

  1. Swift语言学习之OC和Swift混编

    本文转自http://www.helloswift.com.cn/swiftbase/2015/0112/3469.html iOS OC和Swift混编 1.创建一个swift或者oc的工程:我这里 ...

  2. OC跟Swift混编

    OC项目中使用Swift 本文版权归作者所有,如需转载请联系孟祥月 CSDN博客:http://blog.csdn.net/mengxiangyue  独立博客:http://mengxiangyue ...

  3. OC与swift混编 #import "项目名-Swift.h"失效问题

    由于项目多个环境部署,每次改配置比较麻烦,所以线上环境一个TARGETS,内部环境一个TARGETS, 都知道oc和swift混编的时候,会生成一个'项目名-Swift.h'文件,这个文件是隐式的,需 ...

  4. IOS --- OC与Swift混编

    swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编.这个在IOS8中是允许的. ...

  5. 【转】IOS --- OC与Swift混编

    群里大神发的网址,感觉有用就先收录了,暂时没时间看SWIFT,感觉代码简洁,但是可阅读性不是太高,有些代码让系统去判断类型,同样的,我们看代码的时候也得自己去判断类型,或许看多就习惯了,有时间再说吧, ...

  6. OC与Swift混编

    群里大神发的网址,感觉有用就先收录了,暂时没时间看SWIFT,感觉代码简洁,但是可阅读性不是太高,有些代码让系统去判断类型,同样的,我们看代码的时候也得自己去判断类型,或许看多就习惯了,有时间再说吧, ...

  7. oc工程中oc、swift混编代码打包成静态framework踩坑笔记

    参考资料: https://www.jianshu.com/p/734341f7c242 https://www.jianshu.com/p/55038871e7de   两天时间探索,期间不知道遇到 ...

  8. oc 和swift混编的时候打包ipa安装不了

    做了一个oc项目.里面实用到swift第三方,真机执行的时候是正常的,用企业级证书打包成ipa之后安装完毕之后闪退.通过导出手机log日志发现错误提示: Dyld Error Message:   L ...

  9. iOS开发之-- oc 和 swift混编之自建桥接文件

    进行swift开发的时候,oc 的项目已经进行了很长一段时间,所以默认使用Xcode自建的桥接文件的时候,这个桥接文件名称是固定的,放置的目录也是无法更改的,所以我就想自己创建一个桥接文件,然后在ta ...

随机推荐

  1. java例题_37 有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子, 3 问最后留下的是原来第几号的那位。

    1 /*37 [程序 37 报数] 2 题目:有 n 个人围成一圈,顺序排号.从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子, 3 问最后留下的是原来第几号的那位. 4 */ 5 ...

  2. linux日志文件说明

    /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 /var/log/maillog 与 ...

  3. [SpringCloud教程]3. Eureka服务注册中心集成

    新微服务项目多半采用Nacos作为服务注册与发现中心,但是旧项目可能使用Eureka.zookeeper.Consul.Nacos作为服务注册中心. 新项目建议使用Nacos作为服务注册中心 Spri ...

  4. 如何快速编写一个微信Api?

    概述 Magicodes.Wx.Sdk致力于打造最简洁最易于使用的微信Sdk,逐步包括公众号Sdk.小程序Sdk.企业微信Sdk等,以及Abp VNext集成. 本篇将侧重于讲述如何向Magicode ...

  5. [枚举]P1085 不高兴的津津

    不高兴的津津 题目描述 津津上初中了.妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班.另外每周妈妈还会送她去学习朗诵.舞蹈和钢琴.但是津津如果一天上课超过八个小时 ...

  6. SQL语句练习(基础版)

    最近在学习SQL基本语句的练习,在此分享一下笔者做过的练习以及个人的解决教程: 首先是基本练习表格的搭建,具体内容如下表所示: Snum Sname Ssex Sage Sphone Dname S0 ...

  7. [Fundamental of Power Electronics]-PART I-6.变换器电路-0 序

    6 变换器电路 我们已经分析了包括buck,boost,buck-boost以及cuk电路,电压源逆变器等一系列电路的工作原理.利用这些变换器,可以执行许多不同的功能:降压,升压,极性反转以及直流交流 ...

  8. [Fundamental of Power Electronics]-PART II-7.交流等效电路建模-7.1 引言

    7.1 引言 变换器系统总是需要反馈的.例如,在典型的DC-DC变换器应用中,无论输入电压\(V_{g}(t)\)和输出有效负载\(R\)如何变化,都必须使输出电压\(v(t)\)保持恒定.这是通过构 ...

  9. 强大的工具(一):Capslock+ 2.x版本

    2020.07.09 更新 作者更新了3.x版本,因此更新了3.x版本的博客,可以戳这里. 本篇文章介绍的是2.x版本. 1 Capslock+简介 Capslock+利用了键盘少用的Capslock ...

  10. JAVAEE_Servlet_24_HttpSession实现原理

    关于JavaWeb中的HttpSession (一) * Session表示会话,不止存在于JavaWeb之中,只要是Web开发都会存在这种机制 * Session包:javax.servlet.ht ...