Совместное использование внутренних классов / методов / и т.д.между модулями Swift - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть 2 модуля Swift, назовем их модулем «A» и модулем «B».Мне нужно разделить некоторый код между этими модулями, давайте назовем этот модуль «Core».

Эти модули используются клиентскими приложениями.Клиенты используют либо модуль A, модуль B, либо оба, и они всегда получают копию «Core».Модуль «Ядро» содержит модель данных, которая используется как «А», так и «В» и доступна клиенту.Тем не менее, я хочу, чтобы 'A' и 'B' могли использовать внутренние методы / классы / и т. Д.в «Core» и не раскрывать их клиенту (то есть я не хочу делать их публичными).Например, я хочу, чтобы «A» и «B» могли создавать экземпляры модели данных, которые я определил в «Core», но я не хочу, чтобы клиент мог их создавать.

Короче говоря, я хочу, чтобы модули «А» и «В» могли иметь доступ к «Ядру», как если бы он был частью одного и того же модуля.То, что я ищу, это эквивалент «класса друга» в C ++, но для модулей в Swift.

Конечно, я мог бы поместить все в огромный проект, а затем использовать разные цели сборки для создания модулей A + Core, B + Core и A + B + Core, но это однажды приведет к комбинаторному взрывумы добавляем модули C, D, E, F и т. д.

Кажется, это очень распространенный способ организации кода, но я не могу найти способ сделать это в Swift 4. Есть кто-нибудьздесь нашли способ сделать это или другой способ структурирования их кодовой базы, чтобы частный код мог быть разделен между модулями?

1 Ответ

0 голосов
/ 04 февраля 2019

Дружественные классы в C ++ не имеют ничего общего с модулями.
Обычным решением этой проблемы было бы создание модуля C и использование A и B для его внутреннего использования.

...