我正在阅读Swift电子书中的Assertions部分,看起来断言与Objective-C对应物的工作方式非常相似.但是,在作为生产应用程序运行时,我可以在文档中找不到任何关于运行时行为的信息.Objective-C NSAssert
承诺永远不会因断言失败而终止生产应用程序.Swift中的情况是一样的吗?
基于Apple在其文档中使用的语言,我会说在生产环境中忽略断言.
如果您的代码在调试环境中运行时触发断言,例如在Xcode中构建和运行应用程序时,您可以确切地看到无效状态发生的位置,并在触发断言时查询应用程序的状态.断言还允许您提供有关断言性质的合适调试消息.
并在"注意"块中:
断言导致您的应用程序终止,并且不能替代以不可能出现无效条件的方式设计代码.然而,在无效的情况是可能出现的情况,一个断言,以确保这些条件突出和有效的方式开发过程中发现,您的应用程序发布之前.
debug和release之间的区别在于编译器参数之间的区别.最可能的答案是会有一些特殊的编译器设置(类似于-ea
Java).
编辑
Swift编译器有一个名为的参数-assert-config
-assert-config指定assert_configuration替换.可能的值包括Debug,Release,Replacement.
在Release
,断言被忽略.不确定Debug
和之间的区别Replacement
.