无法从Objective-C ++代码调用swift函数

时间:2018-11-08 06:13:49

标签: objective-c swift

在Swift中,我的课程如下所示

@objc public class DemoSDK: NSObject {

public static var shared = DemoSDK()

public func connect(delegate: DemoSDKDelegate?) {
}
}

我像下面这样迅速地调用了一个方法(我正在尝试编写下面一行的等效的objective-c ++代码)

DemoSDK.shared.connect(delegate: self)

如何从Objective-C ++代码调用swift文件功能? 我已经将标头和所有相关的类导入了Objective-C ++类,所有必需的类和方法也都标有@objc

(注意:swift中的类没有构造函数或初始化程序)

DemoSDK *obj = [[DemoSDK alloc] init]; // Error 'init' is unavailable 

2 个答案:

答案 0 :(得分:3)

在快速文件中添加getInstance方法:

@objc public class DemoSDK: NSObject {

private static var shared = DemoSDK()

@objc public static func getInstance() -> DemoSDK {
  return shared
}

@objc public func connect(delegate: DemoSDKDelegate?) {

}

}

obj-C代码:

[[DemoSDK getInstance] connect: self];

答案 1 :(得分:1)

使用@objc

标记所有公共类,协议,初始化器,函数和属性。