2015-03-02 64 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中的空指針異常。 只需檢查您的代碼,以查找未在代碼中使用的未初始化的對象。

相關問題