• Swift和OC混编(一) 2017-07-04 19:32:34
    Swift和OC混编(一)由于最近swift版本趋于稳定的趋势,本人也一直在研究并尽可能的将swift用于现有的项目中,希望逐渐的替代之前的OC代码。废话不多说,直接上!1、既然希望在OC中使用swift,那么第一步肯定需要...
    #Swift和OC的混编(一)
    ***
    由于最近swift版本趋于稳定的趋势,本人也一直在研究并尽可能的将swift用于现有的项目中,希望逐渐的替代之前的OC代码。废话不多说,直接上!
    ***
    **1、既然希望在OC中使用swift,那么第一步肯定需要先创建一个swift文件(虽然第一步可能要配置一些东西,这边我们按照常规的思想操作),创建过程中会给出提示**
    ![提示是否创建桥接文件](https://img-blog.csdn.net/20170704185244396?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHcxMzUyNjE3NjEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    
    ```
    直接点击(Create Bridging Header)即可。之后会生成这样一个文件
    ```
    ![桥接文件](https://img-blog.csdn.net/20170704185535276?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHcxMzUyNjE3NjEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    ```
    测试中发现,只有当swift调用OC类的时候,该文件才会有用。当然,你也可以重新设置它的名称,那么就需要重新设置它的路径
    ```
    ![修改桥接文件的路径](https://img-blog.csdn.net/20170704185813999?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHcxMzUyNjE3NjEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    ```
    当你默认点击create,并且没有做任何修改的时候,该路径是默认创建的。
    ```
    **2、修改swift的相关配置**
    ![修改swift相关配置](https://img-blog.csdn.net/20170704190401701?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHcxMzUyNjE3NjEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    ```
    Defines Module值必须要修改为YES。有文说,swift是以module方式管理的,所以该选项必要要设置为YES。
    ```
    **3、在OC中引入相关头文件**
    ![OC中引入swift相关头文件](https://img-blog.csdn.net/20170704190805023?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHcxMzUyNjE3NjEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    ```
    其实,该头文件就是之前所需要记下的(项目名称(默认值)+"-Swift")构成,这时候,就可以在OC类中直接使用swift类了。
    ```
    **4、其实,这时候,系统帮我们自动生成了一个中转类**
    ![系统生成的中间类](https://img-blog.csdn.net/20170704191104306?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHcxMzUyNjE3NjEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    ```
    这是系统根据swift文件所对外公开的方法和属性等生成的一个中间类(上下就是其他swift文件的中间类),所以我们在OC中调swift文件时所使用的语法,其实还是OC语法,并不影响我们使用。
    ```
    **5、swift类中引用OC类**
    这里我创建了一个OC类型的Model,希望在OC的VC里面配置,然后传给swift类的View。
    ![OC类model](https://img-blog.csdn.net/20170704191819041?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHcxMzUyNjE3NjEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    
    ```
    现在就需要用到之前系统所帮忙创建的桥接(我是这么称呼它的~)文件了。
    需要在该文件中引入你想在swift中所调用的类的头文件。
    ```
    ![桥接文件配置](https://img-blog.csdn.net/20170704192203871?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHcxMzUyNjE3NjEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    
    ```
    下面就可以在swift类中直接调用OC类
    ```
    ![swift类中使用OC类](https://img-blog.csdn.net/20170704192247675?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHcxMzUyNjE3NjEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    
    ```
    在目标swift文件中,直接使用OC类model就不会出错了。至于willSet和didSet方法,这边主要用于类似OC中的set方法(swift也有get和set方法),具体会在后面详解。现在就需要在OC类中给该swift类传一个model值过来,并打印出结果。
    ```
    ![OC类中给swift类传值](https://img-blog.csdn.net/20170704192528612?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHcxMzUyNjE3NjEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    这边再截图一下那个系统帮忙生成的中间类,会看到model这个属性值
    ![](https://img-blog.csdn.net/20170704192720370?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHcxMzUyNjE3NjEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    
    ```
    所以,只要做好相关配置之后,对于我们而言,使用的还是OC语法。至于哪些属性或者
    方法会在系统中间类中生成,会在后面有机会再说,这并不是本篇内容的重点。
    下面打印一下我们的传值结果,来验证一下
    ```
    ![传值打印结果](https://img-blog.csdn.net/20170704192933531?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHcxMzUyNjE3NjEy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    
    ```
    可以看出,就到目前而言,我们已经完全可以不去管我们在调用的是否还是swift文件了。因为就现在而言,我们的调用全都是OC语法。
    ```
    
    ```
    暂时先到这,通篇大白话,如果错误,希望不吝指出,一起共勉!!!
    ```
    
    
    
    
    展开全文
  • oc和swift混编 2020-06-21 16:48:13
    这是需要做oc和swift混编需要用到的,现在oc的发展变慢,swift成长很快,需要这种技术的请下载,如果不是做ios的请慎重
  • OC和Swift混编(惊喜!) 2015-05-12 20:30:25
    今天在一位前辈交流的之后,使用了OC和Swift混编开发,遇到了一个让我忍不住要欢呼的情况,在这里,跟大家分享一下,也再次赞叹一下XCode的强大.OC和Swift混编出现最多的就是在编写Swift代码的过程中使用OC框架了....
  • OC和Swift混编Pod引入第三方库的问题 问题描述:Swift应用OC 的开源框架,需要创建一个桥接头文件,问题就出在这个看似简单,却隐藏着一个巨大的问题:一切都按部就班的在桥接头文件中引入了OC 头文件,但是...
  • OC和swift混编包太大 2018-01-29 17:29:50
    OC和swift混编包太大问题
  • OC Swift 混编 2017-08-30 13:29:01
    首先承认我落后了,到今天才开始在项目里用swift,而且还不是全部的用,只是oc和swift混编,因为实在是进入项目的时候框架已经用oc搭好了啊啊啊啊啊。只能退而求其次,混编了,大致根据百度到的方法试了一下,不是很...
  • OC和Swift是苹果爸爸的原生语言,Swift代替OC的成本太高,需要过度时间,但是现在的Swift的成长很快,在这个矛盾的时间,我们必须混编了。 1、创建一个新的工程 ,工程的名字叫OCAndSwiftDemo。 2、配置工程...
  • OC和Swift混编 a. Swift OC 的映射关系 Swift 兼容来大部分 OC,当然还有一些 Swift 不能够使用的,例如 OC 中的预处理指令,即宏定义不可使用,虽然在目前4.2版本下,已经开始支持了少量的宏,如 #if ...
  • WWDC推出了SwiftUI、Combine,仅Swift可用~为了能顺利的也吃上SwiftUI,我也打算将自己的项目先从OC慢慢迁移到Swift,所以~一起从混编开始! 创建Swift的view 正常创建文件,语言选swift 创建Bridging Header 上...
  • 概述 Swift的设计的初衷就是摆脱...随着Swift的改进及Swift开源项目剧增,越来越多的Objective-C工程开始使用Swift混编,不管是在基于Swift工程中或者Objective-C工程中,SwiftObjective-C文件都可以无缝结合。本文
  • IOS --- OCSwift混编 2017-05-16 18:08:38
    先中简单的入手,先研究在同一个工程目录下混合使用的情况。...[cpp] view plaincopy--- OCSwift混编" TITLE="IOS --- OCSwift混编" />--- OCSwift混编" TITLE="IOS --- OCSwift混编" /> impor
  • iOS开发之OC Swift混编 2018-08-17 17:53:26
    相信很多开发者在开发过程中,使用别人封装好的三方框架,但由于三方框架的开发语言(OC或者Swift)与现有工程的开发语言不一致,导致无法直接使用,那么对于混编来说,是不二的选择。 Swift项目使用OC框架   1...
  • OC和Swift混编.pdf 2020-06-03 23:32:33
    OC混编Swift, Swift项目混编Objective-C Framework Target混编Swift 怎么遵循 OC运行时 混编的一些坑
  • OCswift混编 2019-02-20 00:38:40
    相信很多iOS开发或多或少已经使用过swift,由于维护的项目时间比较久了,以往都是使用OC开发,现在正在对已有一些功能进行改版重写,索性使用swift来做,以下是在使用OCswift进行混编过程的一些介绍。一、工程配置...
  • 原有的项目都是使用OC写的,既然要在原有项目中引入swift文件首先就要实现OC和swift混编设置。 混编设置: 在OC项目中创建一个swift文件的时候首先Xcode会弹出一个提示框: 这时我们要选择“Create ...
  • OCSwift混编 2018-07-19 11:31:59
    首先要说明的是,混编时,比如工程原先用oc,你突然创建了一个swift文件,那么xcode会弹出一个是否...下边说说两种混编方式   1.OC里调用swift: xcode会隐形生成类似类似 “工程名-Swift.h”的文件,直接#imp...
  • 说起这个话题,在我看来,比项目中的OC混编C++,C等简单些,毕竟OC和Swift都是苹果自己的开发语言,API什么的都一样,还是更容易混合开发些,好了,废话不多说,切正题,OCSwift怎么混和开发呢?OC类中可以引入...
  • OC和Swift混编的一点小坑 2016-07-21 16:32:12
    首先 Swift调用OC的类 一个Swift工程,当创建一个OC类的时候 会出现这个提示,让你创建一个bridging header文件。当然,如果你的类是从别的地方拖过来或其他情况的话,不要急,自己创建一个就好了。命名方式xxx-...
1 2 3 4 5 ... 20
收藏数 1,628
精华内容 651