Предоставление внутренней функции Swift для файла Objective-C (в платформе), не делая его публичным - PullRequest
0 голосов
/ 23 мая 2018

У меня есть среда Swift, в которой у меня есть файл Objective-C.Из этого файла я хочу получить доступ к методу, который объявлен как внутренний.Я знаю, что могу поменять его на публичный, чтобы сделать его доступным.Но я не хочу показывать это клиентскому приложению.Есть ли способ достичь этого?

В .swift:

@objc internal class func callBack(str: String) {
    print("Swift method was called | Passed value: " + str)
}

В .m:

- (void)callSwiftFunc {
    // This is not available, only if I set public in Swift
    [SwiftClass callBackWithStr:@"blabla"];
}

1 Ответ

0 голосов
/ 23 мая 2018

Вы можете явно установить селектор objc, а затем добавить категорию, которая объявляет метод:

заменить @objc на @objc(callBackWithStr:), затем просто добавить прямое объявление:

@interface SwiftClass ()
+ (void)callBackWithStr:(NSString *)string;
@end
...