Заголовок интерфейса, сгенерированный Objective-C, и CocoaPods

Я снова обращаюсь к коллективному разуму за помощью!

Я использую 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), но я чувствую, что для этого должно быть более надежное решение.

Будем рады услышать мысли по этому поводу!

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

ianyh 09.10.2018 15:00

Хм, не уверен, что понимаю. Как это поможет? Чтобы прояснить больше, у меня есть несколько типов, которые мне нужно предоставить ObjC, все из моего основного модуля. Проблема в том, что эти типы используют типы из фреймворков, включенных через CocoaPods, и включаются в сгенерированный заголовок X-swift.h, который ничего не знает об этих типах CocoaPods, поскольку не ссылается на них.

D6mi 09.10.2018 19:15

Извините за двусмысленность! Я имел в виду попробовать #import "Siesta-swift.h".

ianyh 10.10.2018 16:38

Заголовок X-swift.h неизменяем, так как он воссоздается каждый раз, когда проект успешно построен, поэтому, боюсь, вы не можете применять к нему изменения.

D6mi 11.10.2018 09:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
193
0

Другие вопросы по теме