Фреймворк Swift и Objective-c выставляет свои внутренние
Я пытаюсь интегрировать Swift в существующую среду target-c, которая имеет публичные, приватные и проектные файлы. Для быстрого доступа к файлам проекта я добавил карту модуля, которая определяет новый модуль (например, MyFramework_Internal), включая все заголовки проекта, как описано здесь: http://nsomar.com/project-and-private-headers-in -a-быстроногих и-Objective-C-рамки/
Эта настройка работает, но я с удивлением увидел, что теперь клиент может получить доступ к внутренним классам, импортировав MyFramework_Internal (@import MyFramework_Internal). Есть ли способ скрыть модуль, так как он нужен только самой платформе? Карта модуля выглядит следующим образом:
module MyFramework_Internal {
header "Folder1/Baz.h"
header "Folder1/Folder2/Bar.h"
export *
}
Ответы
Ответ 1
Файл модуля предназначен для Objective-C, а Objective-C не имеет понятия internal
. Он знает только public (что объявлено в заголовочных файлах) и private (что объявлено только в файлах реализации).
Таким образом, все, что попадет в файл модуля, будет общедоступным.