【发布时间】:2016-04-02 13:40:08
【问题描述】:
我的项目中有几个assert(condition, "message") 语句。
它们用于检查开发过程中的不变条件。我认为它们会在生产/发布版本中被忽略(如this answer 中所述)。 它们不是。 相反,它们会在 TestFlight 测试期间导致崩溃。当我评论断言应用程序不会崩溃时。通常会出现一些问题,但不会崩溃。
这可能与我的构建设置有关吗?
我所有的归档方案都使用发布配置:
断言位于 Cocoa Touch Framework 项目中,用于自定义键盘扩展。
所有项目中的所有目标(Cocoa Touch Framework,以及带有键盘扩展目标的主项目)都有这些构建设置:
Enable Foundation Assertions
Debug YES
Release NO
Disable Safety Checks NO
怎么了?
编辑:
Sulthan's answer 展示了如何在调试和发布版本中全局禁用断言。那不是我需要的。我希望它按预期工作 - 断言应该在调试中启用,但在发布版本中禁用。
默认情况下它以这种方式工作 - 在我的主项目中也以这种方式工作。但它不适用于位于从该主项目链接的框架项目中的断言(this question 中的详细信息)。为什么?如何解决?
【问题讨论】:
-
你试过我的answer了吗?
-
@Sulthan 不,我没有。我认为不应该要求添加任何自定义标志来确保它忽略发布中的断言。我现在就试试。
-
我也认为它不应该是必需的(它在第一个 beta 版本中是必需的)。
-
@Sulthan 请查看我的编辑 - 断言者的默认行为在框架中被破坏。
标签: ios xcode swift assert build-settings