oc项目桥接swift_ios oc 桥接swift - CSDN
  • 参考:https://www.cnblogs.com/mazhiqiang/p/5557002.html=============swift中...在swift项目中创建一个OC文件的时候,Xcode 会提示创建一个桥接文件 点确定创建桥接文件,Xcode会自动创建一个桥接文件名字:工...

    参考: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" 

    展开全文
  • SwiftOC桥接文件

    2016-03-25 10:26:48
    简介在使用Swift编程时,往往我们会用到OC的文件,需要使用其内的方法来满足我们的需求,所以我们就要使用swiftoc桥接文件,来引入oc中的头文件,至此来调用oc中的方法,满足我们在Swift编程下的需求.具体步骤 1.选中...

    简介

    在使用Swift编程时,往往我们会用到OC的文件,需要使用其内的方法来满足我们的需求,所以我们就要使用swift与oc的桥接文件,来引入oc中的头文件,至此来调用oc中的方法,满足我们在Swift编程下的需求.

    具体步骤

    • 1.选中我们的工程,点击New File -> Header File;

    这里写图片描述

    • 2.点击Next,为我们的桥接文件命名;

    这里写图片描述

    • 3.点击Create;

    这里写图片描述

    • 4.在Build Setting -> Objective-C Bridging Header添加桥接文件路径;

    这里写图片描述

    • 5.在bridging.h里面引入相应的头文件;

    这里写图片描述

    • 6.在工程中即可使用;
    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            ProgressHUD.showError("错误提示")
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
    
    }
    
    展开全文
  • 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];
    

    ​    

     

    展开全文
  • OC项目项目中包含多个Target,用于实现环境分离。 目标:用Swift4.0版本版本进行普通混编开发(此外还有开发Framework混编、引用外部Framework和宿主App混编)。 普通混编说明 Swift访问OC OC访问...
    • 环境介绍:

      mac OS sierra 10.12.6
      Xcode9(Version 9.0 (9A235))
      OC的项目,项目中包含多个Target,用于实现环境分离。

      目标:用Swift4.0版本版本进行普通混编开发(此外还有开发Framework混编、引用外部Framework和宿主App混编)。

      普通混编说明

      Swift访问OC OC访问Swift
      不需要在Swift中import OC的类,统一在桥接文件(ProductName-Bridging-Header.h)中导入需要暴露给Swift的OC类即可在Swift中访问。 在OC类中导入ProductName-Swift.h文件(根据不同Target的名称,对应文件名称不同),即可访问Swift中暴露给OC的属性和方法。

      项目大体结构如如下图:

      项目概览.png

      一、Swift中如何访问OC的类

      当我们第一次在工程中创建一个.Swift文件,Xcode会提示你是否创建桥接文件,点击‘是’,Xcode会帮我们给每一个Target建立对应的桥接文件(用于在Swift中访问OC的类)。如果点击了‘否’,可以自己创建桥接文件,然后在下图位置指定桥接文件路径(注意每个Target都对应配置好)

      设置桥接路径.png

      由于不同Target下的桥接文件名称不一样,如果你觉得Swift需要访问OC下的类每个环境不需区分(我们工程中不需要),那么把各个Target下的桥接路径改成同一个即可,删除其他的桥接文件(以后若需区分可以再添加)省得需要同时往多个环境下导入OC的类

      设置桥接路径.png

       

      Xcode9默认混编下的Swift版本不是4.0,各个Target都配置一下

      设置Swift版本号.png

      在桥接文件中导入Swift需要访问的OC类,.Swift文件中即访问OC的类了

      暴露给Swift的文件列表.png

      p7.png

      二、OC中如何访问Swift的类(Swift4.0中想要暴露给OC的方法和属性前面都需添加@objc)

      首先,给每个Target下的build Settings的Defines Module设置为YES

      设置Defines Module.png

      由于Xcode会根据不同的Target的创建不同的‘Swift转换OC下生的成接口头文件’,英文:Objective-C Generated interface Header Name,如下图

      Swift转OC接口文件.png

      Swift转OC接口文件.png

      OC想要访问Swift的文件,需要根据不同Target下导入不同的接口文件,因此我们定义一个Swift.h文件,根据不同的Target导入不同的转接口文件即可。如下图:

      Swift转OC接口文件统一管理.png

      如果你没有在某个OC类中引入当前Target下的接口文件和编译,貌似是没有办法通过command+点击跳入进去。所以我们只需要在某个OC文件中导入该接口文件然后编译,就可以跳入进去了,这里为了方便,建立一个Swift.h文件,根据环境import不同的接口文件。

      上面的预编译宏在下图配置(不同Target配置不同的预编译宏,实现环境分离)

      OC预编译宏.png

      Swift下因为没有预编译宏,但是可以通过Swift Flags配置实现条件编译达到同样的效果(每添加一个标识前,都需要添加一个 -D ,Debug和Release模式下都需要添加-D ,不然编译器无法识别) :

      Swift编译变量.png

       

      至此,配置完成。

      Tip:

      1、Swift 3.2暴露给OC的属性和方法不需要添加@objc,但是4.0需要。
      2、如果你使用的Xcode9.0以下的版本,那么到你导入ProductName-Swift.h文件的时候可能报错,告诉你对应的接口文件(ProductName-Swift.h not found)找不到,但是你的各项配置都正确,应该是Xcode的编译器问题(Clean、重启都没用),直接run就好了,应该能run起来,虽然编译器一直提示报错,建议升级Xcode。
      3、直接拖动对应的Swift文件到工程的话,好像直接拖动添加.swift文件到工程Xcode不会添加到编译列表中,因此要注意检查拖动的文件是否添加到了build phase的编译列表中。
      4、OC项目混编Swift的时候,如果项目没有自动生成桥接文件(ProductName-Bridging-Header.h),那么你一定要自己创建并配置好路径。
      因为:没有桥接文件会影响到你的Swift转OC接口文件(ProductName-Swift.h)中Swift要暴露给OC生成的接口。具体影响有:假设你拖动了N个Swift类,虽然要暴露给OC的Swift基本类和方法都添加了@objc,但只有extention类会自动生成对应的转接口,其他类不会。

       



      作者:002and001
      链接:https://www.jianshu.com/p/754396e7e1bd
      来源:简书
      简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    展开全文
  • 无论是swift里拖oc代码还是ocswift,Xcode都会自动创建桥接文件。 实际应用场景也就分为上述两种, 当ocswift桥接文件里不需要做操作,需要在你需要引入swift类的那个类里 #import ,这时就可以正常使用...
  • 项目中右键添加一个swift文件,我添加的LearnSwift.swift添加后Xcode弹出‘是否配置oc桥接头文件’的提示,点确认,系统自动生成一个项目名-Bridging-Header.h的文件,我的是LearnSwift-Bridging-Header.h。...
  • 进行swift开发的时候,oc项目已经进行了很长一段时间,所以默认使用Xcode自建的桥接文件的时候,这个桥接文件名称是固定的,放置的目录也是无法更改的,所以我就想自己创建一个桥接文件,然后在target里配置一下...
  • 虽然网上关于swift和oc混合编程的教程比较多,但是大多是基于 swift项目的,所以对咱们 OCer的参考价值有一定折扣. 现在swift虽然仍然存在很多缺陷,但是鉴于苹果的强势,是时候在项目中把简单的功能交给swift了,给...
  • 根据个人喜好先创建一个Swift或者OC工程项目(此文以Swift项目示例),在创建好项目之后,创建一个OC类(可以创建继承自UIView或者NSObject或UIViewController),如下图我创建的那样: 1.继承自NSObject且带一个...
  • ...1.项目上右键,New File选择Header File,选择文件目录,然后确定。 ? ? 2.点击项目-->TARGETS-->Build Settings中找到Swift Compiler,里面有一项:Objective-C Bridging Head
  • Swift创建桥接文件

    2017-03-08 18:49:40
    在使用Swift编程时,往往我们会用到OC的文件,需要使用其内的方法来满足我们的需求,所以我们...桥接文件的创建有两种方式,以Swift项目为例:一、之前没创建过oc的类将一个OC的文件直接拖进Swift工程,这是会出来一个提示
  • iOS OC项目调用Swift

    2017-03-17 13:51:27
    网上有很多关于OC项目中使用Swift类的方法,但是亲自试了之后,发现不够详细,多次尝试后,终于找出详细的方法。 现把方法和遇到的问题,记录下来,方便其他同仁借鉴.
  • OC项目中引入Swift

    2020-07-07 09:47:18
    OC项目中引入swift 首先在工程文件里面创建一个.swift文件,如果你之前没有创建过这时候会提示你创建一个桥接文件; kywy-Bridging-Header.h 备注:有的孩纸会没有提示,创建这个文件的。避免打乱节奏我在文章...
  • OC项目引入Swift方法 在OC项目中,有可能会遇到需要引入Swift写的第三方库,下面整理下OC项目如何使用Swift库 1.在已有的OC工程中新建一个Swift文件,命名为Test.swift,会弹出提示,选择Create Bridging Header建立...
  • OC项目中使用Swift

    2016-02-27 09:23:30
    OC项目中使用Swift 本文版权归作者所有,如需转载请联系孟祥月 CSDN博客:http://blog.csdn.net/mengxiangyue 独立博客:http://mengxiangyue.com 最近公司的项目开始计划使用Swift,由于原先的工程都是使用...
  • 最近想试着开始写学着swift项目了,然后就在用cocoapods pod下来的第三方框架的时候出现了问题,先以为是自己创建桥接文件后,配置出错了,但是网上的那些文章都还是能把桥接文件处理好,言归正传,先上图 ...
  • 我的项目就是基于swift做的开发,早就发布在了appstore,当时用swift做开发时项目时间紧就没有写博客。现在也是回顾一下,做下记录,帮助那些用swift或打算学用swift的同学。我是做安卓的,后来在公司的信任和朋友的...
  • Swift项目中直接创建oc文件 创建一个swift项目swift项目中随便创建一个oc文件. Xcode 会弹框子,提示如下 选择后,Xcode 会自动生成一个 .h 文件,文件名: "xxxx项目-Bridging-Header.h" 在 "xxxx项目-Bridging...
  • OC项目Swift指南

    2020-07-11 15:07:53
    最近参与的一个项目需要从Objective-C(以下简称OC)转到Swift,期间遇到了一些坑,于是有了这篇总结性的文档。 如果你也有将OC项目Swift化的需求,可以作为参考。 OCSwift有一个大前提就是你要对Swift有一定的...
  • 1、直接在swift项目中创建oc的类,会弹出提示没直接选择创建桥接文件,Xcode会自动帮你创建好并进行配置。 2、自己手动创建并配置,名字自己起, 然后进行配置,Target->Build ...
1 2 3 4 5 ... 20
收藏数 1,603
精华内容 641
关键字:

oc项目桥接swift