oc 访问swift类中的方法_oc类不能访问swift创建类中的代理 - CSDN
  • 最近在一个混编项目,一个OC类需要去访问一个Swift类,访问其他Swift类都可以,但就没法访问报以下错误: 点进去看发现该类型是个结构体,如下所示: 解决方案:因为Swift的结构体除了不能继承外可以有自己的成员变量和...
    • 最近在一个混编项目中,一个OC类需要去访问一个Swift类,访问其他Swift类都可以,但就没法访问报以下错误:
      报错
    • 点进去看发现该类型是个结构体,如下所示:
      在这里插入图片描述在这里插入图片描述
    • 解决方案:因为Swift的结构体除了不能继承外可以有自己的成员变量和方法,就是一个不能继承的类.所以我将struct改成了class,结果还是不行.后来就像因为Swift中的类可以没有父类,而OC的中有基类的,所有类都最终继承至NSObject,所以就将该CTPCarVideoUploadInfoModel也继承NSObject,果然改完后再OC中就可以访问该类型了.改完后如下:
       class CTPCarVideoUploadInfoModel:NSObject{
       }
      
    展开全文
  • 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对象的变量调用不到的问题,这里总结一下: 1.首先我们一个Swift项目TestProject。 2.建立一个Swift的文件继承自NSObject名字为SwiftFile.swift,并声明一个字符串变量...

    之前在开发是遇到了在OC文件中调用Swift对象的变量调用不到的问题,这里总结一下:

    1.首先我们一个Swift项目TestProject。

    2.建立一个Swift的文件继承自NSObject名字为SwiftFile.swift,并声明一个字符串变量swiftName。

    import UIKit
    
    class SwiftFile: NSObject {
    
        var swiftName = ""
    }

    3.建立一个OC的文件ObjectFile,并导入“HFSTeacher-Swift.h”(OC想要调用Swift需要导入此文件)如何配置以及导入原因可以自行查询。

    #import "ObjectFile.h"
    #import "HFSTeacher-Swift.h"
    
    @implementation ObjectFile
    
    -(void)oneMethod
    {
        SwiftFile *swiftFile = [[SwiftFile alloc]init];
        NSLog(@"%@",swiftFile.swiftName);
    }
    
    @end

    这个时候会报错,说在SwiftFile中找不到swiftName成员。

    4.这个时候需要在SwiftFile.swift中加入一个声明@objcMembers以表示文件中成员可以被OC调用:

    import UIKit
    
    @objcMembers
    class SwiftFile: NSObject {
    
        var swiftName = ""
    }
    

    5.如此则大功告成!

    展开全文
  • 2. 在swift与OC混编的编译环境下, oc类不能访问swift创建类中的代理? 解决方法如下: 在代理的头部加上 @objc(代理名字),这样就在外部就可以访问了,如下图。 然后就和oc中的代理一样,写上协议方法...


    1. swift与oc混编译具体怎么实现,这儿我就不重复讲出了,网上有大把的人讲解。

    2. 在swift与OC混编的编译环境下, oc类不能访问swift创建类中的代理?

    解决方法如下:



    在代理的头部加上 @objc(代理名字),这样就在外部就可以访问了,如下图。 然后就和oc中的代理一样,写上协议方法,就可以进行你想要的操作了。



    3. swift中的回调方法介绍:

       1. 通过代理 ,写法大家可以看上面的两张图片,和oc代理差不多。

       2. 通过闭包来实现oc中代码块(Block)的方法,来进行代码回调

           2.1 定义  (swift类)

          

          2.2 调用   (swift类)

        

         2.3 具体回调处:(OC - 类)

         


    本文持续更新, 看oc与swift 混编有哪些雷,需要我们踩

    展开全文
  • swift中使用OC方法;在OC中调用swift方法
    swift中使用OC类的方法:
    1.当新建OC的类时-->Create Bridging Header

    2.桥接文件
    当我们开发Swift中 使用OC的类 需要在桥接文件中导入相应的OC的类

    3.直接在swift中调用

      let instance = OCOnceToken.shareTools()
            
            print("\(instance)")

    注意事项:当新建OC的类时-->Create 没有点这个,就需要自己创建桥接文件: -->OC中的点H文件,新建好了之后在工程的设置里面修改桥接文件: 注意格式: 项目名称/桥接文件名称(含.h后缀)

    OC文件中使用swift方法;
    步骤和注意事项和上面一样:(其余如下)

    1.在swift里面
    class SwiftToOc: NSObject {
        static let swiftOc: SwiftToOc = SwiftToOc()    
    }

    2.在OC中调用swift方法
    //先导入swift的头文件,格式: #import "项目名-Swift.h"
     SwiftToOc *SW = [SwiftToOc swiftOc];
        
        NSLog(@"%@",SW);

      - 注意 如果当前的项目名中 有数字和中文还有‘-’ 会导入不成功

      - 如果当前使用有数字和中文还有‘-’ 可以 修改product name


    注意事项:当新建OC的类时-->Create 没有点这个,就需要自己创建桥接文件: -->OC中的点H文件,新建好了之后在工程的设置里面修改桥接文件: 注意格式: 项目名称/桥接文件名称(含.h后缀)





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

    2016-09-05 10:26:53
    oc中调用swift中的struct  在oc中是不能调用struct里面的内容的,你想在类似class前面加个@objc的方法加在struct前面,你是发现是不行的,那但是我们又想在oc中调用struct的属性,那怎么办呢?我们只能够再建一...
  • 2. 在swift与OC混编的编译环境下,oc类不能访问swift创建类中的代理? 解决方法如下: 在代理的头部加上 @objc(代理名字),这样就在外部就可以访问了,如下图。 然后就和oc中的代理一样,写上协议方法,就...
  • Swift创建了这样的一个单例 @objc open class Danli: NSObject { static let swiftSharedInstance = Danli() //在oc中这样写才能被调用 @objc open class func sharedInstance() -> Danli { ...
  • 背景: 项目里面OC写的文件有个block属性要在swift里面访问, 但是在swift里面怎么都无法访问到属性, 然后把block属性加到oc方法参数里面,连方法也不能访问了. 思考: 第一直觉猜的是swift不支持oc的block了,但是...
  • iOS oc 调用 swift

    2019-07-03 07:14:24
    如股票oc要调用swift里面的代码 需要包含固定这个头文件 项目名称 LiqunSwiftDemo-Swift.h ...LiqunSwiftDemo-Swift 点进去 可以看到 所有的swift代码 都产生了 对应的一个 oc 也就是 编译过程...
  • 环境介绍: mac OS sierra 10.12.6 Xcode9(Version 9.0 (9A235)) OC的项目,项目包含多个Target,用于实现环境分离。 目标:用Swift4.0版本版本进行普通混编开发(此外还有开发... OC访问Swift ...
  • 1新建选择Swift 的时候, 会出现是否选择生成类似这样的头文件, 选择生成,(用于Swift类调用Oc使用的) 2 在Oc类中声明 工程的名字加上-Swift.h 类似 3 接下来进入下一个界面的方法就都一样啦。 ...
  • 1、我们先创建一个OC的项目MyFirstOCUseSwiftDemo 2、我们点击Target看到右边选择Build Settings,把Defines Module改为YES, 3、我们回到工程目录下,New File一个Swift File,起名为MyFristSwift,此时会...
  • swift文件访问oc文件 #oc文件访问swift文件 法一: 法二: 转载于:https://juejin.im/post/5b96366df265da0ac849186e
  • IOS --- OCSwift混编

    2017-05-16 18:08:38
    简单的入手,先研究在同一个工程目录下混合使用的情况。...[cpp] view plaincopy--- OCSwift混编" TITLE="IOS --- OCSwift混编" />--- OCSwift混编" TITLE="IOS --- OCSwift混编" /> impor
  • 随着Swift的日益完善,终究会取代OC的地位,就像Kotlin取代Java一样,不是时间的问题,而是使用者愿意不愿意被时代淘汰的问题首先是Swift中定义闭包
  • oc调用swift: 需要在暴露出来的方法和属性上加@objc否则不可用。需要在工程配置里面做一些小改动。 具体设置和内容可以参考: https://www.jianshu.com/p/754396e7e1bd https://www.jianshu.com/...
  • Swift 调用OC枚举

    2019-09-17 14:35:00
    OC中 typedef NS_ENUM (NSUInteger, EVDeviceType) { EVDeviceAudioCapture = 0, EVDeviceAudioPlayback = 1, EVDeviceVideoCapture = 2 }; Swift EVDeviceType.audioCapture
1 2 3 4 5 ... 20
收藏数 4,627
精华内容 1,850
关键字:

oc 访问swift类中的方法