oc调用swift类_swift oc 调用swift类 - CSDN
  • iOS OC项目调用Swift类

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

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

    一、新建一个OC工程,工程名称自定,在这里我定义为OCAndSwiftDemo,如图:

    新建项目架构图

    二、在新建Swift类之前,进行相关设置,如图:

    相关设置

    三、在项目中,新建一个TestDemo的swift类,点击Create后,提示如图:

    创建OC调用Swift类的桥接文件

    选择Create Bridging Header,一定要选择这个,如果不选择,就引入不了Swift类,然后生成”项目名称-Bridging-Header.h”桥接文件

    然后编辑Swift类,如果Swift类想要被OC发现,必须继承自NSObject,如图:

    TestDemo类

    四、调用Swift类,我们想要调用Swift类的方法里面引入头文件:”项目名称-Swift.h”,如图:

    调用Swift类

    注释:如果调用不了Swift类,可以先Shift+Command+R一下。

    展开全文
  • [Swift]1.在OC项目里的OC代码调用Swift方法,Swift代码里调用OC代码。2.在Swift项目里的Swift代码里调用OC代码,OC代码调用Swift方法。
  • OC 调用 Swift 方法

    2018-09-06 11:47:34
    1.新建Swift文件之前做以下设置 2.创建Swift文件后,会提示... 3.Swift import Foundation class RealmManager: NSObject { override init() { super.init() } @objc func getConins() -> Str...

    1.新建Swift文件之前做以下设置
    这里写图片描述

    2.创建Swift文件后,会提示创建桥接文件,点击创建

    3.Swift 类

    import Foundation
    
    class RealmManager: NSObject {
        override init() {
            super.init()
        }
        @objc func getConins() -> String {
            return "\(Setting.coins),\(Setting.currentLevel)"
        }
    }

    Swift的类必须继承NSObject 否则无法识别
    Swift的方法必须用@objc 修饰,否则,无法识别

    4.在OC中导入Swift引用
    、#import “plus-Swift.h”

    plus 就是上边截图的Product Name

    展开全文
  • 一、OC调用swift文件  在OC项目中创建一个swift文件的时候,Xcode 会提示 需要创建一个桥接文件,点确定创建桥接文件,Xcode会自动创建一个桥接文件 名字:工程名-Bridging-Header.h 这个桥接文件是 swift...

    一、OC调用swift文件

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

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

    这个桥接文件是 swift 调用OC文件的时候用的

    1、

      进入TARGETS ->Build Settings -> Packaging 中

    设置Defines Module为YES

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

    2、

      在swift写一个类

    注意这个类一定要继承NSObject,不然在OC中没法用

    class hello: NSObject {

        var address : String
        var gender: String
       
        init(address:String,gender:String){
            self.address = address
            self.gender = gender
        }
       
        func method() {
            print("message \(self.address + self.gender)")
        }
    }

    3、

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

    所以直接导入 #import "工程名-Swift.h"

    4、

      记着写完先command +B编译一下,如果没有报错就可以在OC文件调用swift中的类了

    hello *helloss = [[helloalloc]initWithAddress:@"上海"gender:@"男"];
    [helloss method];

    展开全文
  • OCswift相互调用

    2017-04-26 11:39:33
    一、OC调用swift文件 二、swift调用OC文件 三、注意和总结 添加: 四、自定义桥接文件  一、OC调用swift文件  在OC项目中创建一个swift文件的时候,Xcode 会提示 需要创建一个桥接文件,点确定...

    一、OC调用swift文件

    二、swift调用OC文件

    三、注意和总结

    添加:

    四、自定义桥接文件 

    一、OC调用swift文件

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

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

    这个桥接文件是 swift 调用OC文件的时候用的

    1、

      进入TARGETS ->Build Settings -> Packaging 中

    设置Defines Module为YES

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

    2、

      在swift写一个类

    注意这个类一定要继承NSObject,不然在OC中没法用

    class hello: NSObject {

        var address : String
        var gender: String
       
        init(address:String,gender:String){
            self.address = address
            self.gender = gender
        }
       
        func method() {
            print("message \(self.address + self.gender)")
        }
    }

    3、

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

    所以直接导入 #import "工程名-Swift.h"

    4、

      记着写完先command +B编译一下,如果没有报错就可以在OC文件调用swift中的类了

    hello *helloss = [[helloalloc]initWithAddress:@"上海"gender:@"男"];
    [helloss method];

     

    二、swift调用OC文件

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

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

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

    例如:

    1、

    这个就是一个OC文件
    //#import "sec.h"
    #import <UIKit/UIKit.h>
    @interface sec : UIViewController
    -(void)actionMake;
    @end
     

    2、

    在桥接文件中把需要用到OC的头文件导入进去
    #import "sec.h"
     

    3、

    编译一下,就可以在swift中用swift的语法调用OC文件的方法了
    let second = sec()
    second.actionMake()

     

    三、注意和总结

    注意:

    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" 

     

     

    四、自定义桥接文件 

     

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

     

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

     

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

     

    3    然后在 Build Setting -> Swift Compiler - Code Generation中

     

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

    2017-01-11 11:45:08
    1.建一个OC工程命名为SwiftOC 2.新建一个swfit文件命名为Test.swift,会弹出提示,选择Create Bridging Header建立桥接文件,系统会建立“工程名-Bridging-Header.h” 3.配置工程 设置Defines Module 为Yes ...
  • 之前在开发是遇到了在OC文件中调用Swift对象的变量调用不到的问题,这里总结一下: 1.首先我们一个Swift项目TestProject。 2.建立一个Swift的文件继承自NSObject名字为SwiftFile.swift,并声明一个字符串变量...
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?...最新一些学妹问起,所以抽点时间来写的,适合入门...1. 第一个方向从 swift工程 中引入 oc类   1. 1 如何在swift中使用oc类  1.2 如何在s
  • oc调用swift

    2015-11-14 18:05:06
    OC调用Swift 如果你想在Objective-C工程中,嵌入Swift文件,实现OC调用Swift,那么这篇文章就能帮助你,由于本人最近在开发Swift项目,所以实现过OC调用Swift,在这过程中遇到过一些瓶颈,特此,将此文奉上,供大家...
  • oc调用swift中的struct

    2016-09-05 10:26:53
    oc调用swift中的struct  在oc中是不能调用struct里面的内容的,你想在类似class前面加个@objc的方法加在struct前面,你是发现是不行的,那但是我们又想在oc中调用struct的属性,那怎么办呢?我们只能够再建一...
  • SwiftOC 互相调用

    2018-07-20 16:19:07
    Swift 调用 OC Swift 调用 OC 分为两种常见情况,一种是直接在 Application 的 project 中使用;另一种情况是,在 framework 开发中使用。 对于互相调用的原理,如下图所示,更详细的内容可以参考 《Using Swif ...
  • 最近在一个混编项目中,一个OC类需要去访问一个Swift类,访问其他Swift类都可以,但就没法访问报以下错误: 点进去看发现该类型是个结构体,如下所示: 解决方案:因为Swift的结构体除了不能继承外可以有自己的成员变量和...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • OC调用Swift方法

    2018-05-02 15:36:48
    第一步:创建桥接文件第二步:配置桥接文件第三步:创建pch文件并配置其路径 第四步:在pch文件中导入如下头文件,注意:...,这里的xxx就是第二步中的Module name, 注意不要写错了 第五步:OC中直接调用Swift...
  • iOS oc 调用 swift

    2019-07-03 07:14:24
    如股票oc调用swift里面的代码 需要包含固定这个头文件 项目名称 LiqunSwiftDemo-Swift.h #ProjectName#-Swift.h 固定的写法 swift 目的 是取代oc 但是 不会完全取代 只是前端的替换 LiqunSwiftDemo-Swift 点...
  • 场景描述:在OC类的方法中,调用Swift类的方法,报错:No visible @interface for ‘CCC’ declares the selector ‘MMM’(CCC为类名,MMM为方法名) // OC中的方法: - (void)test { NSLog(@"hello ...
  • OC调用SwiftOC调用Swift方法比较简单。但是需要注意以下几点: 1.需要在当前OC里导入xxx-Swift.h头文件,其中xxx为项目名称(与你的项目配置相关,具体配置方式见上一篇文章) 2.OC里仅可以调用public的Swift...
  • Swift创建了这样的一个单例 @objc open class Danli: NSObject { static let ... //在oc中这样写才能被调用 @objc open class func sharedInstance() -&amp;gt; Danli { return NFX.sw...
  • 本文章将从两个方向分别介绍 OC 与 swift 混编  1. 第一个方向从 swift工程 中引入 oc类   1. 1 如何在swift的类中使用oc类 1.2 如何在swift中实现oc的代理方法 ... 2.1 如何在OC类中使用swift类 2.2 如何...
1 2 3 4 5 ... 20
收藏数 9,494
精华内容 3,797
关键字:

oc调用swift类