我的简单代码出了什么问题?

时间:2016-06-23 18:22:47

标签: xcode swift compiler-errors runtime-error

import UIKit

var b = 3
assert(b <= 0, "this is impossible")

和Xcode显示:“exc_bad_instruction(code = exc_i386_invop subcode = 0x0)”,任何人  有想法吗?!,我的Xcode问题有问题吗?谁知道设置游乐场优化等级在哪里?

2 个答案:

答案 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.