错误“Thread 1:EXC_BAD_INSTRUCTION(code = EXC_I386_INVOP,subcode = 0x0)”是什么意思?
问题描述:
我得到这个错误:错误“Thread 1:EXC_BAD_INSTRUCTION(code = EXC_I386_INVOP,subcode = 0x0)”是什么意思?
Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
我该如何解决这个问题?该代码正常工作,但在计算器中,当我点击唯一的平等按钮时,会出现该错误。
@IBAction func equals(sender: AnyObject) {
secondNumber = Screen.text!.toInt()! // here it shows an error which is "Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)"
if operation == "+"{
result = firstNumber + secondNumber
}
else if operation == "-" {
result = firstNumber - secondNumber
}
else if operation == "x" {
result = firstNumber * secondNumber
}
else {
result = firstNumber/secondNumber
}
Screen.text = "\(result)"
}
答
通常,EXC_BAD_INSTRUCTION意味着代码中存在断言失败。疯狂的猜测,你的Screen.text
不是一个整数。仔细检查它的类型。
答
此行
secondNumber = Screen.text!.toInt()!
指:获取屏幕对象,获取text属性,并将请崩溃,如果它不存在,然后拿到文本转换成整数,并请崩溃,如果它不”不存在。
这就是!意思是:这意味着“我确定这件事存在,所以如果它不存在,请立即崩溃”。这就是它所做的。
答
矿为约
dispatch_group_leave(group)
在里面如果闭合块。我刚刚把它从关闭中移出。
答
根据我的工作,它看起来像java中的空指针异常。 只需检查您的代码,以查找未在代码中使用的未初始化的对象。
在这行'result = firstNumber/secondNumber''secondNumber'等于零时会发生什么? – 2015-03-02 07:50:15
是的,我知道它是未定义的,所以我如何解决它? “ – legolas 2015-03-02 07:53:39
”将数字除以零('i/0'),或试图通过零计算余数('i%0'),将导致错误。“ - [Swift编程语言 - 高级操作符](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AdvancedOperators.html) – 2015-03-02 07:55:59