Я снова обращаюсь к коллективному разуму за помощью!
Я использую CocoaPods, и у меня есть X-swift.h, чтобы открыть некоторый Swift code toObjective-C`.
Представьте себе следующую ситуацию:
NetworkService наследует класс Service Siesta (Siesta добавлен через CocoaPods) и является public. Поскольку класс Siesta Service на самом деле является NSObject, мой тип NetworkService будет публично представлен через Objective-C через заголовок X-swift.h, и компилятор пошлет мне горе и слезы, поскольку X-swift.h не знает, что такое Service (или BOSService, если быть точным. ) является.
Заголовок X-swift.h не ссылается на фреймворки, предоставляемые CocoaPods, поэтому заголовок не знает, какие типы из библиотек добавлены через CocoaPods.
Другой пример - GoogleMapsSDK. Соответствие типа Swift GMSMapViewDelegate требует, чтобы он был NSObject, таким образом, он автоматически раскрывается через заголовок X-swift.h и вызывает ту же проблему сборки.
Я временно решил эти проблемы, обернув эти типы NSObject чистыми типами Swift (чтобы они не экспортировались через заголовок X-swift.h), но я чувствую, что для этого должно быть более надежное решение.
Будем рады услышать мысли по этому поводу!
Хм, не уверен, что понимаю. Как это поможет? Чтобы прояснить больше, у меня есть несколько типов, которые мне нужно предоставить ObjC, все из моего основного модуля. Проблема в том, что эти типы используют типы из фреймворков, включенных через CocoaPods, и включаются в сгенерированный заголовок X-swift.h, который ничего не знает об этих типах CocoaPods, поскольку не ссылается на них.
Извините за двусмысленность! Я имел в виду попробовать #import "Siesta-swift.h".
Заголовок X-swift.h неизменяем, так как он воссоздается каждый раз, когда проект успешно построен, поэтому, боюсь, вы не можете применять к нему изменения.





Вы пробовали напрямую импортировать фреймворк, а не только свой основной модуль?