oc中怎么使用swift_oc 混编swift ,oc 中不能找到swift 方法 - CSDN
  • 今天研究了一下如何在OC项目中使用swift文件,即OCswift的混编问题,发现在OC中要使用swift文件也是蛮简单的,实践过程列如下: 1)首先随便创建了一个OC项目,就叫 DetialViewDemo 2)因为Swift的代码默认是...

    最近在研究swift,就我看来,swift确实是比OC更优秀的语言,这可以体现在很多方面,网上已经对比的很透彻,就不一一赘述。
    今天研究了一下如何在OC项目中使用swift文件,即OC和swift的混编问题,发现在OC中要使用swift文件也是蛮简单的,实践过程列如下:
    1)首先随便创建了一个OC项目,就叫 DetialViewDemo
    这里写图片描述
    2)因为Swift的代码默认是使用module管理的,所以两者混编的最重要的一步,就是把我们的Swift代码作为一个module暴露给OC工程,具体步骤如下:
    这里写图片描述
    3)创建一个swift文件或者将已有的swift文件拖入项目中,我这里是拖入了一个练习swift写的一个类:
    这里写图片描述
    注意点:swift文件添加的时候会提示是否添加桥接文件,直接点击不创建就OK
    4)好了,文件都准备好了,接下来就需要在使用到swift文件的类中引入”Product Module Name-Swift.h”,其中Product Module Name其实就是项目的名称,这个在上面配置Module的图中也能看到,然后我们就可以愉快地和swift进行玩耍了
    这里写图片描述
    注意:引入Product Module Name-Swift.h的时候不一定自动提示,手写之后编译就可以了

    当然,我很好奇这是怎么回事,然后我就command+点击 Person 进入了内部查看,发现原来苹果将所有的swift文件中的代码转成了oc的代码,不管你引入多少个swift文件,都会一股脑在Product Module Name-Swift.h文件中翻译成oc文件以便我们oc程序调用
    这里写图片描述

    怎么样,很强大吧,朋友们赶紧转过来吧,开始自己的swift开发,这绝对是苹果的未来啊!

    展开全文
  • ...在OC中使用Swift 1.首先创建一个工程名字就叫做CHWTest1 2.在工程的Build Setting中把Defines Module改为YES,如图 3.把Product Name设为工程的名字,如图 4

    转自:http://m.blog.csdn.net/article/details?id=47100535



    一.在OC中使用Swift

    1.首先创建一个工程名字就叫做CHWTest1

    2.在工程的Build Setting中把Defines Module改为YES,如图


    3.把Product Name设为工程的名字,如图


    4.在你的OC文件中导入ProjectName-Swift.h(这个 ProjectName-Swift.h是系统自动创建的,不要手动去创建,ProjectName是你的工程得名字,这里就是CHWTest1


    这时候编译会报错,因为并没有Swift文件

    5.创建Swift文件


    这里创建一个Swift的类,语言选择为Swift,然后会提示你,是不是创建一个OC的桥接头文件,这里选择YES,创建完之后,你的工程里是这样的

    是的,你会发现你的工程中多了个 PrductName-Bridging-Header.h的一个文件,这个的作用就是OC和Swift的桥接,里面有这样一句话

     Use this file to import your target's public headers that you would like to expose to Swift.意思就是,在这里面你个以导入类,以供你的Swift使用,这里面我的例子是OC-Swift-OC三个类之间的push,具体代码如下




    然后push的效果就出来了,如图


    OK,到这里,OC中使用Swift就已经结束,不难吧!

    二,如何在Swift中使用OC

    Swift中使用OC文件和上面差不多,只是需要几步

    1.创建一个Swift工程,这里面就叫做CHWTest2

    2.Swift代码引用OC,需依靠 Objective-C bridging header 将相关文件暴露给Swift,创建 Objective-C bridging header 有两种方法:

    (1)当你在Swift项目中尝试创建OC文件时,系统会自动帮你创建 Objective-C bridging header,如下




    此时除了 .h 、.m 文件之外,会额外多出一个叫做 项目工程名-Bridging-Header.h 的文件,这个文件中导入的类是可以暴露给Swift看到的。你要做的,只是#import XXXX.


    这个步骤和上面是差不多的,另外一种方式就是

    (2)自己创建 Objective-C-bridging-header这个桥接文件

    File > New > File > (iOS or OS X) > Source > Header File切记,名字 一定要 是 项目工程名-Bridging-Header.然后还有一步,在项目的 Build Settings选项里,要确保Swift Compiler 选项里有这个 Bridging Header 文件的设置,路径必须指向文件本身,而不是目录!


    这里,Swift中就可以使用OC文件了!


    展开全文
  • 上篇讲了Swift中使用OCSwift中使用OC,这篇讲下OC中使用Swift类。 在OC中需要用到Swift代码的文件中引入#import “XXX-Swift.h”,XXX是你的工程名称。 特别注意 1、被使用的Swift的类必须是至少继承自NSObject...

    Swift中引用OC看这篇
    在OC中需要用到Swift代码的文件中引入#import “XXX-Swift.h”,XXX是你的工程名称。

    特别注意
    1、被使用的Swift的类必须是至少继承自NSObject的,不然OC识别不了这个类。
    2、Swift中的属性和方法,要加上@objc标识,不然识别不了。

    代码如下,Swift中定义了一个类,这个类有一个类属性和一个类方法。

    class UUUU:NSObject {
        @objc static var yyy:String?
        @objc static func test()->(){
            print("XXXX")
        }
    }

    在OC需要用到的地方先引入#import “XXX-Swift.h”,然后就能用了

        UUUU *u  =[UUUU new];
        NSLog(@"%@" , UUUU.yyy);
        [UUUU test];

    Swift中使用类属性和类方法代替宏定义

    另外,在Swift的类中,可以使用只读的类属性和类方法来代替OC中的宏定义,这样定义的宏在OC中直接用,省略了在oc中再定义一次的麻烦。代码如下

    class UUUU:NSObject {
        //只读的类属性
        @objc static var name:String{
            return "jim"
        }
        //类方法
        @objc static func RGBColor(r:Float , g:Float , b:Float) -> UIColor {
            return UIColor.init(red: (CGFloat(r/255.0)), green: (CGFloat(r/255.0)), blue: (CGFloat(r/255.0)), alpha: 1.0)
        }
    }

    另一种Swift代替宏定义的方法是使用全局变量和全局函数来定义,Swift中使用全局变量和函数代替宏

    展开全文
  • 1、Charts的下载地址 2、解压后将文件夹全部复制到项目中去 3、在项目中添加Charts.xcodeproj ...6、在oc中使用swift,需要桥接文件,若是之前没有添加过swift文件,那么只要新建一个swift文件,

    1、Charts的下载地址
    2、解压后将文件夹全部复制到项目中去
    这里写图片描述

    3、在项目中添加Charts.xcodeproj
    这里写图片描述

    这里写图片描述

    4、添加依赖
    这里写图片描述

    这里写图片描述

    5、看下手动添加项目的流程
    这里写图片描述

    注意:Xcode8.2 之后,需要将“Always Embed Swift Standard Libraries”设置YES。

    这里写图片描述

    6、在oc中使用swift,需要桥接文件,若是之前没有添加过swift文件,那么只要新建一个swift文件,之后项目会提示是否需要添加,可以自动添加桥接文件

    这里写图片描述

    7、在桥接文件中导入头文件即可

    这里写图片描述

    注意:若是直接将Charts.xcodeproj拖拽到项目中,会经常出现,依赖找不到源文件,各种问题,需要先将整个文件夹复制到项目中,然后在添加Charts.xcodeproj

    展开全文
  • 需求:OC项目中使用新建swift文件的类 问题:新建swift文件时,笔者的Xcode没有提示生成桥接文件,需要自己配置并手动创建桥接文件,最后在OC中成功引用swift写的类 项目说明:没有使用framework与pod 重要的配置...
  • swift中使用OC的方法;在OC中调用swift方法
  • OC中调用Swift代码方法

    2018-06-03 09:27:48
    最近在项目中使用到了Swift语言写的第三方的框架,所以在这里将OC中使用Swift的方法说明一下。1.首先要在Build Setting中进行相关配置2.在Podfile文件中要加上use_frameworks!为什么要加use_frameworks!呢?首先需要...
  • Swift项目中直接创建oc文件 创建一个swift项目 在swift项目中随便创建一个oc文件. ... 在 "xxxx项目-Bridging-Header.h" 中导入将需要在swift中使用OC文件即可 在swift项目中直接使用即可 也可以.
  • OC项目中使用Swift

    2016-02-27 09:23:30
    OC项目中使用Swift 本文版权归作者所有,如需转载请联系孟祥月 CSDN博客:http://blog.csdn.net/mengxiangyue 独立博客:http://mengxiangyue.com 最近公司的项目开始计划使用Swift,由于原先的工程都是使用...
  • iOS OC项目调用Swift

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

    2017-02-25 18:00:30
    oc中使用swift代码,只需要加入一个头文件即可。这个头文件是这么写的:#import <项目名-swift.h>· 例如我的项目: 我们点击进去这个头文件发现: 原来他把swift的头文件都放这这个头文件来,原来时这么做...
  • Swift项目中使用OC,在OC项目中使用Swift 几天前,我开始新的App的开发了。终于有机会把swift用在实战中了,也学到了之前纯学语法时没有机会获得的知识。 这篇博文中,我就如何使用swiftOC混编做一个...
  • 碰到一个swift的项目,博主要用OC来进行...Swift中使用OC使用桥接文件,可以查看http://blog.csdn.net/codingfire/article/details/51880516在OC中使用Swift文件博主还真不知道,查了下,具体说明如下:假设我有一个类
  • swift开发过程我们难免会使用一些OC的开源库来附注项目开发。这就涉及到OCswift的混编了,正好本人最近也在模仿斗鱼直播的项目,自己也使用OC的第三方库,今天就给大家介绍一下自己的使用过程。 一、导入第...
  • 最近在一个混编项目中,一个OC类需要去访问一个Swift类,访问其他Swift类都可以,但就没法访问报以下错误: 点进去看发现该类型是个...后来就像因为Swift中的类可以没有父类,而OC的中有基类的,所有类都最终继承至NSObj...
  • 最近在学习swift,很想在之前OC的项目中使用swift 开始的时候,上手还算比较快,下面记录下简单的一些坑。 1.由于接触的swfit一些教程,所以准备在已有的OC里面使用swift,按照教程,没问题,但是我在原来的OC中...
  • OC调用Swift方法

    2018-05-02 15:36:48
    第一步:创建桥接文件第二步:配置桥接文件第三步:创建pch文件并配置其路径 第四步:在pch文件导入如下头文件,注意:...,这里的xxx就是第二步的Module name, 注意不要写错了 第五步:OC中直接调用Swift...
  • 1首先需要将 always embed swift standard libraries 设置 为yes,如上图2然后设置SWIF语言的版本,如下图
  • oc中调用swift中的struct

    2016-09-05 10:26:53
    oc中调用swift中的struct  在oc中是不能调用struct里面的内容的,你想在类似class前面加个@objc的方法加在struct前面,你是发现是不行的,那但是我们又想在oc中调用struct的属性,那怎么办呢?我们只能够再建一...
1 2 3 4 5 ... 20
收藏数 20,062
精华内容 8,024
关键字:

oc中怎么使用swift