Невозможно вызвать функцию swift из кода Objective-C ++ - PullRequest
0 голосов
/ 08 ноября 2018

В Swift мой класс выглядит примерно так

@objc public class DemoSDK: NSObject {

public static var shared = DemoSDK()

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

Я вызываю метод из swift, как показано ниже (я пытаюсь написать эквивалентный код target-c ++ из строки ниже)

DemoSDK.shared.connect(delegate: self)

Как я могу вызвать файловую функцию swift из файла target-c ++? Я уже импортировал заголовок и все связанные классы в класс target-c ++, также все необходимые классы и методы помечены @ objc

(Примечание: у класса в swift нет конструктора или инициализатора)

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

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Добавить метод getInstance в файл swift:

@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];
0 голосов
/ 08 ноября 2018

Пометить все открытые классы, протоколы, инициализаторы, функции и свойства с помощью @objc

...