【发布时间】:2015-07-17 15:26:16
【问题描述】:
前言
在 Swift 中,ENABLE_NS_ASSERTIONS 被忽略,断言是打开还是关闭取决于 SWIFT_OPTIMIZATION_LEVEL、see here for more information。
-
assert()对-Onone有效 -
assertionFailure()对-Onone -
precondition()对-Onone和-O有效 -
preconditionFailure()对-Onone、-O和-Ounchecked有效 -
fatalError()对-Onone、-O和-Ounchecked有效
我想要实现的目标
Debug 和 Beta Build 应该有断言启用,Release Build应该有断言disabled。
我是怎么做到的
我可以通过precondition 方法在Swift 中编写我的所有断言,并使用-Ounchecked 标志编译发布版本,使用-O 标志编译beta 版本。
我不确定什么
iOS 中发布版本的默认值为-O。有什么建议不要将-Ounchecked 用于发布版本?这会导致哪些其他不良副作用?
【问题讨论】: