在 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 类的主要内容,如果未能解决你的问题,请参考以下文章