答案 0 :(得分:2)
我在追踪另一个问题的同时遇到了这个问题。但也许我可以提供一个场景。你为什么不想启用可测试性?
-fvisibility =隐藏。
如果您想使用GCC_SYMBOLS_PRIVATE_EXTERN(也就是默认隐藏的符号),启用可测试性具有更高的优先级,并将覆盖它。
在我的情况下,我有一个从Debug复制的配置,因此具有Enable Testability == YES。我有一个外部静态库,它是用-fvisibility = hidden构建的,用于构建我自己的一个静态库(用Xcode构建)。但是,在构建我的调试版本时,我会收到错误,例如(我编辑了函数名称和路径)
显示所有消息:功能中的直接访问...表示弱 符号不能在运行时被覆盖。这可能是由于 使用不同的可见性编译不同的翻译单元 设置。
来自Apple doc:
将“启用可测试性”构建设置设置为“是”时,即 对于新项目中的测试构建,默认情况下为true,Xcode包含 编译期间的-enable-testing标志。这使得在已编译模块中声明的Swift实体有资格获得更高级别的访问权。
似乎它也适用于Swift可访问性。所以,如果你没有使用Xcode的测试和Swift,你似乎也可以不用这个。