• 参考:https://www.cnblogs.com/mazhiqiang/p/5557002.html=============swift中调用OC创建桥接路径:*****************方法一:在swift中创建OC代码会自动跳出创建桥接文件的提示;在swift项目中创建一个OC文件的...

    参考:https://www.cnblogs.com/mazhiqiang/p/5557002.html

    =============swift中调用OC创建桥接路径:

    *****************方法一:在swift中创建OC代码会自动跳出创建桥接文件的提示;

    在swift项目中创建一个OC文件的时候,Xcode 会提示创建一个桥接文件 点确定创建桥接文件,Xcode会自动创建一个桥接文件


    名字:工程名-Bridging-Header.h


      把swift需要用到的OC文件的头文件放到桥接文件里 工程名-Bridging-Header.h

    *************方法二:在Build Setting -> Objective-C Bridging Header添加桥接文件路径;在bridging.h里面引入相应的OC的头文件;在工程中即可使用;



    =================OC中调用swift创建桥接路径:参考https://www.jianshu.com/p/28b05cca9271

    *********方法一:在OC项目中创建一个swift文件的时候,Xcode 会提示 需要创建一个桥接文件,点确定创建桥接文件,Xcode会自动创建一个桥接文件;

    (添加一个XXSwift.swift文件

    添加后Xcode弹出是否配置oc桥接头文件’的提示,点确认,系统自动生成一个FastAppAwift-Bridging-Header.h的文件)

    1、进入TARGETS ->Build Settings -> Packaging 中,设置Defines Module为YES


    设置 Product Module Name ,也可以不设置,默认为工程的名字(FastappSwift)。这个在后面会用到


    2、在swift写一个类

    注意这个类一定要继承NSObject,

    3.在OC需要用到的swift文件中 导入文件 "FastappSwift-Swift.h"  因为 Product Module Name 默认是工程的名字;

    直接导入 #import "FastappSwift-Swift.h"

    理解下#import "FastappSwift-Swift.h"

    其实是项目名-Swift.h,这也是Xcode自动生成的,根据你写的所有swift代码,生成一个oc的.h文件,进行类和方法的声明,这样在oc里引用这个头文件后,就相当于引用了所有swift声明,可以直接使用了。

    *****************方法二:自定义设置bridge

    如果不用Xcode提示创建桥接文件也可以自定义一个桥接文件



    1     使用 Header File  把里面的内容清空。



    2 这文件名可以自定义, 一般还是用 工程名-Bridging-Header.h   例如app - file.h



    3    然后在 Build Setting -> Swift Compiler - General中



    4、设置Objective-C Bridging Header 为自定义的桥接文件相对于工程的绝对路径,也就是项目总文件夹的路径,如果在第一层,就直接写自定义的桥接文件的名file.h,如果在下一层,文件夹/桥接文件 app/file.h 



    ===========总结和注意

    注意:

    1、OC项目在导入swift文件前 先按照系统提示创建桥接文件,
    2、在 targets -> Build Settings -> Packaging  中设置Defines Module 为YES
    3、在OC中调用swift文件的时候,swift中的类 要继承NSObject
    不然没办法在OC中调用
    4、OC中调用swift文件需要导入”工程名 -Swift.h"
         (这个是build Setting -> Packaging->Product Module Name 的名字,而这个属性默认是工程的名字)
    5、写完记得command + B 编译 一下
    6、swift项目 引用OC文件也需要创建 桥接文件,在这个桥接文件中导入OC文件的头文件
    7、桥接文件只有一个,作用只是为了 swift 引用OC文件,OC引用swift 文件虽然也需要创建桥接文件
            但是不需要在桥接文件中 导入swift文件
    8、如果一个项目既有OC引用swift 也有swift引用OC ,就先设置OC调用swift文件
         在桥接文件 导入OC文件,OC可以定义PCH文件导入”工程名 -Swift.h" 

    展开全文
  • 一、是直接将OC文件拉到Swift的工程中,然后Xcode会自动创建桥接头文件,这种就比较省事了,Xcode给你自动创建。 二、就是Xcode没有提示,需要自己创建桥接文件,步骤如下 1.首先去添加一个桥接的OC头文件,还有...

          最近使用swift的时候引用了OC文件,就给大家说一下我的个人经验,以供大家参考。

    一、是直接将OC文件拉到Swift的工程中,然后Xcode会自动创建桥接头文件,这种就比较省事了,Xcode给你自动创建。

    二、就是Xcode没有提示,需要自己创建桥接文件,步骤如下

    1.首先去添加一个桥接的OC头文件,还有就是大家起名字的时候,最好取成xxx_Bridge_Header这种格式的,因为如果是Xcode自己创建的话就是ssss_Bridge_Header,不过这个无所谓,只要好识别就行。

     

     

     

    2.然后找到Build Settings,搜索swift就会出来下面的东西,将Objective-C Bridging Header的内容修改成这种格式  工程名/桥接文件名,这是表明头文件的引用路径,如图所示

     

    3.现在桥接文件就完成了,只需将需要的头文件放到桥接文件中即可,我是因为要用数据库,引用了#import"sqlite3.h”如图所示

    展开全文
  • swift导入oc第三方库

    2019-05-05 15:31:39
    swift导入oc第三方库 前言 对于ios开发而言,目前很多第三方库或者demo还是以oc为主,swift相关的资料很少,这篇文章就结合博主的开发实例对在swift工程中导入并使用oc版本的第三方库进行阐述。 正文 1.编写oc桥接头...

    swift导入oc第三方库

    前言

    对于ios开发而言,目前很多第三方库或者demo还是以oc为主,swift相关的资料很少,这篇文章就结合博主的开发实例对在swift工程中导入并使用oc版本的第三方库进行阐述。

    正文

    1.编写oc桥接头文件

    顾名思义,将oc编写的库桥接到swift工程里的头文件。
    结合实战,首先我在项目工程的根目录下创建一个名为xxxx.h的.h文件,内容如下,暂时不去修改:

    #ifndef xxxx_h
    #define xxxx_h
    #endif 
    

    接着,在项目的targets里的Build Settings选项里,找到Objective-c Bridging Header选项:

    在这里插入图片描述
    将这一项设置为刚刚创建的.h文件,如“xxxx.h”

    2.导入第三方库

    做完第一步,准备工作就已经做好了,接下来也很简单。我在这里分两种情况进行阐述。
    (1)framework形式导入的第三方库:
    例如集成支付宝的sdk(https://docs.open.alipay.com/204/105295/),导入后项目里会存在AlipaySDK.framework文件。这个时候在swift中,你还是不能直接引用支付宝相关的类和方法的,这个时候,我们在刚刚创建的桥接文件里,加上:

    #ifndef xxxx_h
    #define xxxx_h
    //导入支付宝的OC的头文件
    #import <AlipaySDK/AlipaySDK.h>
    #import <AlipaySDK/APayAuthInfo.h>
    #endif 
    

    然后你会发现,在代码里,你就可以正常调用支付宝SDK中的类和方法了,就这么简单。
    (2)直接拷贝的第三方库:
    例如第三方客服平台Udesk的集成(http://www.udesk.cn/doc/ios/udesksdk_ios/),按其要求手动将第三方工程文件导入你的项目中后,你的项目会存在如下的文件夹:

    此时,仍然需要在桥接文件里将你所需要用到的类文件导入,如:

    #ifndef xxxx_h
    #define xxxx_h
    //导入Udesk的OC的头文件
    #import "UdeskSDK/SDK/UdeskAgent.h"
    #import "UdeskSDK/SDK/UdeskCustomer.h"
    #import "UdeskSDK/SDK/UdeskManager.h"
    #import "UdeskSDK/SDK/UdeskMessage.h"
    #import "UdeskSDK/SDK/UdeskOrganization.h"
    #import "UdeskSDK/SDK/UdeskSetting.h"
    #import "UdeskSDK/UDChatMessage/Udesk.h"
    #endif 
    

    然后,在项目targets的general选项中,找到“Linked Frameworks and Libraries”,将第三方库中的.a文件添加进去:


    点击add other…之后选择.a文件即可。接下来你就可以在swift中调用第三方库的类和方法了。

    swift导入oc第三方库的方法就说到这,欢迎留言讨论~

    展开全文
  • OCswift混编(桥接)

    2018-10-10 14:49:59
    所谓桥接就是在OC 工程中第一次创建swift文件的时候回生成一个头文件(Bridging-Header.h )。 这里主要是swift 调用OC方法的时候引入OC文件.h 所使用的   第一次在OC工程中创建swift文件生成的 头文件, ...

    所谓桥接就是在OC 工程中第一次创建swift文件的时候回生成一个头文件(Bridging-Header.h   桥)。 这里主要是swift 调用OC方法的时候引入OC文件.h 所使用的

     

    第一次在OC工程中创建swift文件生成的桥 头文件, 此时路径默认已生成,不用管

     

    如果第一次没有创建,后期需要使用,那¥那么直接创建一个  XXX -Bridging-Header.h 文件,然后配置一下路劲,如下:

    直接把头文件(桥) 拖进去即可。

     

    说一下调用问题

    swift 调用OC方法, 遵循swift语法

    
      @objc func performSelector() {
                    OcFileModel.ocLog();    // Oc  方法
        }

    ​​​​​OC​ 调用swift, 遵循OC的语法, OC要调用swift方法,swift方法前边必须有@objc 声明, 如上。 在OC的类里边想调用swift,必须要声明文件,它的声明是类似一个所有swiftwen文件的声明,格式是  "工程名-Swift.h "   这个没有提示,手动敲出来。     #import "XX-Swift.h"

        NewsModel *model = [[NewsModel alloc]init];
    
        [model performSelector];
    

    ​    

     

    展开全文
  • 在使用swiftoc混编的时候,swift中是不能导入头文件的; 1.在swift中,第一次创建oc文件时,系统会自动弹出,是否自动创建头文件,这个就不提示了,点击YES,就好 2.还有一种情况是,如果系统没有提示自动...

    开始~~

    在使用swift和oc混编的时候,swift中是不能导入头文件的;

    1.在swift中,第一次创建oc文件时,系统会自动弹出,是否自动创建头文件,这个就不提示了,点击YES,就好



    2.还有一种情况是,如果系统没有提示自动创建,那么我们需要手动创建.

    3.首先跟OC中创建,header文件一样,选择创建 Header File,

    4.下一步,在Build Settings中,找到,Swift Compiler - Code Generation中的,Objective-C Bridging Header,在这里面,输入你创建的头文件的路径,就可以了,步骤看截图

    展开全文
  • 接头文件主要应用于swiftoc的混编。这里有两种创建方式。 方法一: 适用于项目(swift项目)之前没创建oc的类,或(oc的项目)swif的类 这里以swift项目为例 既然没用过就创建一个呗Commond+n然后创建,这...
  • ...在OC中使用Swift 1.首先创建一个工程名字就叫做CHWTest1 2.在工程的Build Setting中把Defines Module改为YES,如图 3.把Product Name设为工程的名字,如图 4
  • SwiftOC 互相调用

    2018-07-20 16:19:07
    Swift 调用 OC Swift 调用 OC 分为两种常见情况,一种是直接在 Application 的 project 中使用;另一种情况是,在 framework 开发中使用。 对于互相调用的原理,如下图所示,更详细的内容可以参考 《Using Swif ...
  • Swift创建桥接文件

    2017-03-08 18:49:40
    在使用Swift编程时,往往我们会用到OC的文件,需要使用其内的方法来满足我们的需求,所以我们就要使用swiftoc的桥接文件,来引入oc中的头文件,至此来调用oc中的方法,满足我们在Swift编程下的需求。 同样适用OC编程时...
  • Swift工程中引用OC文件

    2017-09-28 16:15:01
    一、是直接将OC文件拉到Swift的工程中,然后Xcode会自动创建桥接头文件,这种就比较省事了,Xcode给你自动创建。 二、就是Xcode没有提示,需要自己创建桥接文件,步骤如下 1.首先去添加一个桥接的OC头文件,还有...
  • swiftOC进行混合编码。
  • oc调用swift

    2015-11-14 18:05:06
    OC调用Swift 如果你想在Objective-C工程中,嵌入Swift文件,实现OC调用Swift,那么这篇...OC调用Swift文件,需要创建桥接头文件,这个文件是当你在OC开发环境中创建Swift文件时由Xcode生成,该接头文件的命名是:-B
  • ocswift混编,OC调用swiftswift调用OC
  • 说起这个话题,在我看来,比项目中的OC混编C++,C等简单些,毕竟OCSwift都是苹果自己的开发语言,API什么的都一样,还是更容易混合开发些,好了,废话不多说,切正题,OCSwift怎么混和开发呢?OC类中可以引入...
  • 浅谈SwiftOC的区别

    2018-06-07 14:30:50
    本文转自:https://www.cnblogs.com/yajunLi/p/6862164.html一、Swift和Objective-C的联系Swift和Objective-C共用一套运行时环境,Swift的类型可以接到Objective-C(下面我简称OC),反之亦然。两者可以互相引用...
  • 环境介绍: mac OS sierra 10.12.6 Xcode9(Version 9.0 (9A235)) OC的项目,项目中包含多个Target,用于实现环境分离。 目标:用Swift4.0版本版本进行普通混编开发... Swift访问OC OC访问Swift ...
  • swift】使用oc的控件

    2017-05-31 23:00:17
    现在当然有很多说如何使用oc第三方库的,无非就是创建桥接头文件,然后import就好,但是对于直接在项目里面写好的oc代码,这样用起来有时候会遇到莫名其妙的错误。 如果你在你的项目里写好了oc代码,但是在接头...
  • 问题描述:Swift应用OC 的开源框架,需要创建一个接头文件,问题就出在这个看似简单,却隐藏着一个巨大的问题:一切都按部就班的在接头文件中引入了OC 头文件,但是xcode总是报错找不到该文件。接下来详细描述...
  • 在项目中右键添加一个swift文件,我添加的LearnSwift.swift添加后Xcode弹出‘是否配置oc桥接头文件’的提示,点确认,系统自动生成一个项目名-Bridging-Header.h的文件,我的是LearnSwift-Bridging-Header.h。...
  • 学习Swift也有一段时间了,但一直以来都是主打OC语言在开发项目。在这里也对Swift这门语言做个笔记。方便自己也方便大家。现在先不说Swift具体的知识语法。就先简单的说说 Swift 与 Objective-C 的混合编程吧,先做...
1 2 3 4 5 ... 20
收藏数 699
精华内容 279