2015-03-02 66 views
19

我得到这个错误:错误“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)" 
} 
+0

在这行'result = firstNumber/secondNumber''secondNumber'等于零时会发生什么? – 2015-03-02 07:50:15

+0

是的,我知道它是未定义的,所以我如何解决它? “ – legolas 2015-03-02 07:53:39

+0

”将数字除以零('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

回答

7

通常,EXC_BAD_INSTRUCTION意味着代码中存在断言失败。疯狂的猜测,你的Screen.text不是一个整数。仔细检查它的类型。

40

此行

secondNumber = Screen.text!.toInt()! 

指:获取屏幕对象,获取text属性,并将请崩溃,如果它不存在,然后拿到文本转换成整数,并请崩溃,如果它不”不存在。

这就是!意思是:这意味着“我确定这件事存在,所以如果它不存在,请立即崩溃”。这就是它所做的。

2

矿为约

dispatch_group_leave(group)

在里面如果闭合块。我刚刚把它从关闭中移出。

-3

根据我的工作,它看起来像java中的空指针异常。 只需检查您的代码,以查找未在代码中使用的未初始化的对象。

相关问题