Swift和Objective-c框架暴露了它的内部结构

Gla*_*uco 12 frameworks objective-c clang ios swift

我正在尝试将Swift集成到现有的具有公共,私有和项目文件的objective-c框架中.为了让swift访问项目文件,我添加了一个模块图,通过包含所有项目头来定义一个新模块(例如MyFramework_Internal),如下所述:http://nsomar.com/project-and-private-headers-in -a-迅速-和Objective-C的框架/

这个设置有点工作,但有一点让我惊讶的是,现在客户端可以通过导入MyFramework_Internal(@import MyFramework_Internal)来访问内部类.有没有办法隐藏模块,因为它只需要框架本身?modulemap现在看起来像这样:

module MyFramework_Internal {  
   header "Folder1/Baz.h"  
   header "Folder1/Folder2/Bar.h"  
   export *
} 
Run Code Online (Sandbox Code Playgroud)

Cri*_*tik 2

modulemap 文件适用于 Objective-C,而 Objective-C 没有internal. 它只知道公共(头文件中声明的内容)和私有(仅在实现文件中声明的内容)。

因此,模块映射文件中最终出现的任何内容都将是公开可用的。