Почему определенный класс Swift невидим для Objective-C? - PullRequest
1 голос
/ 13 октября 2019

Все

Xcode 10.3 и Swift 5.0

У меня сложный проект с 3 целями («Имя», «Проверка имени» и «Имя локальное»)

Я установил все заголовки взаимодействия между Swift и Objective-C, включая Name-Bridging-Header.h, макросы препроцессора Objc для импорта Name-Swift.h, Name_Test-Swift.h или Name_Local-Swift.h выборочно

#ifdef TEST
#import "Name_Test-Swift.h"
#elif LOCAL
#import "Name_Local-Swift.h"
#else
#import "Name-Swift.h"
#endif

Я импортировал несколько классов Swift, которые я часто использую, и все работает нормально.

Сейчас ....

Я добавил новый класс Swift. Этот новый класс является подклассом NSObject

class NewClass: UIView { }

Но, используя новый класс в Objective-C классе, XCode не может найти этот новый класс с этими ошибками:

# import "Name-Swift.h"не распознается.

NewClass *item = [NewClass alloc]; - Неизвестное имя типа 'NewClass'

Я проверил следующее: - Новый класс добавлен во все цели и проверен в Build-Phases -> Compile-Sources section

  • Мои другие классы Swift не имеют открытых или @objc идентификаторов, и все работает хорошо ..... Итак, яТем не менее я попытался использовать их в новом классе (@objc и public в определении класса), но безуспешно

Только добавление NewClass *item = [NewClass alloc]; в любой класс Objective-C заставляет Xcode перестать распознавать "Name-Swift.h"

Есть идеи, чего не хватает?

1 Ответ

0 голосов
/ 13 октября 2019

После некоторого тестирования я обнаружил, что мне нужно импортировать файл Name-Swift.h в файл .h, где я хочу объявить свой объект.

Мой проект определяет #import Name-Swift.h в Name-Prefix.pch

#ifdef TEST
#import "Name_Test-Swift.h"
#elif LOCAL
#import "Name_Local-Swift.h"
#else
#import "Name-Swift.h"
#endif

Объявление #import в файле .pch позволяет классу Swift быть доступным где угодно из файла .m моего класса Objective-C, но не из .h

Я не уверен, что это ожидаемое поведение ... Я сделаю глубокое погружение в документацию.

...