Swift中precondition(condition: Bool, message: String)
和assert(condition: Bool, message: String)
的区别是什么?
我觉得他们两个看起来都一样.在哪种情况下,我们应该使用一个而不是另一个?
Swift中precondition(condition: Bool, message: String)
和assert(condition: Bool, message: String)
的区别是什么?
我觉得他们两个看起来都一样.在哪种情况下,我们应该使用一个而不是另一个?
assert
用于测试期间的健康判断,而precondition
用于防止发生可能意味着程序无法合理进行的事情.
例如,你可以在一些有合理结果的计算中加assert
(比如在一定范围内),以快速发现是否有错误.但是你不想附带它,因为越界结果might是有效的,并且不是关键的,所以不应该让你的应用崩溃(假设你只是用它在进度条中显示进度).
另一方面,在获取元素时判断数组上的下标是否有效是precondition
.当请求一个无效的下标时,数组对象没有合理的下一步操作,因为它返回一个非可选值.
文档全文(请try 在Xcode中单击assert
和precondition
选项):
Precondition
判断前进的必要条件.
使用此功能可检测必须防止故障的情况
在操场和-Onone构建中(Xcode调试的默认设置
In-O版本(Xcode发布配置的默认版本):
在判断过的版本中,不判断
condition
,但
Assert
带有可选消息的传统C风格断言.
使用此功能进行活动的内部健全性判断
在操场和-Onone构建中(Xcode调试的默认设置
In-O构建(Xcode发布配置的默认版本),
在判断过的版本中,不判断
condition
,但