Невозможно вызвать некоторые методы из класса Objective C в расширении Swift этого класса - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть класс Objective-C что-то вроде:

@interface MyClass: NSObject { }

- (MyObject *)coolMethod;

@end

@implementation MyClass

- (MyObject *)coolMethod {
    return [self doCoolStuff];
}

@end

... и расширение Swift что-то вроде:

extension MyClass {
    @objc func addedMethodInSwift() {
         let coolObj = coolMethod()   // <<<< compiler error - method not found
    }
}

Код не будет компилироваться, потому что компиляторне удается найти реализацию coolMethod(), однако некоторые другие методы из класса Objective-C можно вызывать из расширения Swift.

Я проверил, и файл заголовка Objective-C включен в заголовок моста проектатак что это должно быть видно Свифту.Данный метод определенно виден в заголовочном файле.

Почему нельзя coolMethod() вызывать из расширения Swift?

1 Ответ

1 голос
/ 03 апреля 2019

Убедитесь, что ваш класс target-C и возвращаемый тип функции (в вашем случае MyObject.h) включены в заголовок Bridging.Методы с типами возврата, не включенными в заголовок моста, недоступны в Swift.

...