import UIKit
var b = 3
assert(b <= 0, "this is impossible")
和Xcode显示:“exc_bad_instruction(code = exc_i386_invop subcode = 0x0)”,任何人 有想法吗?!,我的Xcode问题有问题吗?谁知道设置游乐场优化等级在哪里?
答案 0 :(得分:1)
第二个想法,我认为你的代码正常运作。如果断言失败,断言应该在运行时使应用程序崩溃。检查您的错误消息是否打印到控制台,如果是,它是否正常工作。
答案 1 :(得分:0)
assert(@autoclosure condition: () -> Bool, @autoclosure _ message: () -> String = default, file: StaticString = #file, line: UInt = #line)
带有可选消息的传统C样式断言。 使用此功能进行活动的内部健全性检查 在测试期间但不影响运输代码的性能。 检查发布版本中的无效用法;见
precondition
。 *在playgrounds和-Onone build(Xcode的Debug的默认值)中 配置):如果condition
的计算结果为false,则停止程序 打印message
后以可调试状态执行。 *在-O构建中(Xcode的Release配置的默认值),condition
未被评估,并且没有任何影响。 *在-Ounchecked构建中,condition
未被评估,但是 优化器可以假设将评估为true
。失败 在-Ounchecked构建中满足该假设是一个严重的问题 编程错误。
因此,除非动态分配变量b
,否则您的代码将按预期工作。
var b = 3
assert(b <= 0, "this is impossible") //It is expected here to stop the execution
//since your b is not less than or equal to 0 which results in true and hence
//`assert` will stop the execution.