在 Objective-c 中使用 swift 类

Posted

技术标签:

【中文标题】在 Objective-c 中使用 swift 类【英文标题】:Use swift classes in Objective-c 【发布时间】:2021-09-26 20:52:23 【问题描述】:

我正在使用 obj-C 应用程序,我需要集成快速协议的 Clover Payment。我已经安装了三叶草豆荚 https://github.com/clover/remote-pay-ios

如何在 obj-C 中使用 swift 协议?我已经这样做了:

在 obj-C .h 文件中

    @class ICloverConnector;
    @interface ViewPayment: UIViewController
    
         ICloverConnector *cc;
     

在 obj-C .m 文件中

    #import "ProjectName-Swift.h"

在 ICloverConnector.swift 中

public protocol ICloverConnector : AnyObject 
    
     func addCloverConnectorListener(_ cloverConnectorListener:ICloverConnectorListener) -> Void
    
    
    func initializeConnection() -> Void
    

如何从 Obj-C 类中调用这两个函数?

【问题讨论】:

您的问题中没有 Swift 类。你已经展示了一个 Swift protocol。如果你想在 Objective-C 中使用它,请将其标记为 @objc 在此之前添加@objc 会出错:方法无法标记为“@objc”,因为在Objective-C 中无法表示参数的类型。 你需要创建 obj-c 包装器 @Cy-4AH 请让我知道我们该怎么做 @Sweeper 在显示错误之前添加 objc 为“方法无法标记为 objc,因为在 Objective-C 中无法表示参数的类型 【参考方案1】:

您需要使用前向声明。 见这里:

https://developer.apple.com/documentation/swift/imported_c_and_objective-c_apis/importing_swift_into_objective-c

【讨论】:

以上是关于在 Objective-c 中使用 swift 类的主要内容,如果未能解决你的问题,请参考以下文章

在 Objective-C 中使用 Swift 类

在 Objective-C 中使用通用 Swift 类

在 Objective-c 中使用 swift 类

无法在 Swift 中扩展 Objective-C 类

在objective-c中使用swift代码时的问题

无法在框架项目的 Objective-C 代码中导入 Swift 类