为什么我不想启用可测试性

时间:2018-05-20 22:04:51

标签: ios xcode

在ios应用程序中,默认行为似乎是测试编译失败。 WAT

为什么我希望这是默认的?当然,在最坏的情况下,我希望Debug启用它?启用可测试性实际上做了哪些改变?

1 个答案:

答案 0 :(得分:2)

我在追踪另一个问题的同时遇到了这个问题。但也许我可以提供一个场景。你为什么不想启用可测试性?

-fvisibility =隐藏。

如果您想使用GCC_SYMBOLS_PRIVATE_EXTERN(也就是默认隐藏的符号),启用可测试性具有更高的优先级,并将覆盖它。

在我的情况下,我有一个从Debug复制的配置,因此具有Enable Testability == YES。我有一个外部静态库,它是用-fvisibility = hidden构建的,用于构建我自己的一个静态库(用Xcode构建)。但是,在构建我的调试版本时,我会收到错误,例如(我编辑了函数名称和路径)

  

显示所有消息:功能中的直接访问...表示弱   符号不能在运行时被覆盖。这可能是由于   使用不同的可见性编译不同的翻译单元   设置。

来自Apple doc:

https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/04-writing_tests.html

  

将“启用可测试性”构建设置设置为“是”时,即   对于新项目中的测试构建,默认情况下为true,Xcode包含   编译期间的-enable-testing标志。这使得在已编译模块中声明的Swift实体有资格获得更高级别的访问权。

似乎它也适用于Swift可访问性。所以,如果你没有使用Xcode的测试和Swift,你似乎也可以不用这个。