Фреймворк Swift и Objective-c выставляет свои внутренние - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь интегрировать Swift в существующую среду target-c, в которой есть публичные, личные и проектные файлы. Для быстрого доступа к файлам проекта я добавил карту модулей, которая определяет новый модуль (например, MyFramework_Internal ), включая все заголовки проекта, как описано здесь: http://nsomar.com/project-and-private-headers-in-a-swift-and-objective-c-framework/

Эта установка работает, но я с удивлением увидел, что теперь клиент может получить доступ к внутренним классам, импортировав MyFramework_Internal ( @ import MyFramework_Internal ). Есть ли способ скрыть модуль, так как он нужен только самой платформе? Карта модуля выглядит следующим образом:

module MyFramework_Internal {  
   header "Folder1/Baz.h"  
   header "Folder1/Folder2/Bar.h"  
   export *
} 

1 Ответ

0 голосов
/ 31 января 2019

Файл модуля предназначен для Objective-C, а Objective-C не имеет понятия internal. Он знает только public (что объявлено в заголовочных файлах) и private (что объявлено только в файлах реализации).

Таким образом, все, что окажется в файле модуля, будет общедоступным.

...