2015-03-02 6 views
19

mam ten błąd:Co oznacza błąd "Wątek 1: EXC_BAD_INSTRUCTION (kod = EXC_I386_INVOP, subkod = 0x0)" oznacza?

Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

Jak mogę rozwiązać ten problem? Kod działa normalnie, ale w kalkulatorze, gdy klikam jedyny równy przycisk, daje ten błąd.

@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

W tym wierszu 'result = firstNumber/secondNumber' co się dzieje, gdy' secondNumber' jest równe zero? –

+0

Tak, mam to, co jest niezdefiniowane, więc jak mogę to naprawić? – legolas

+0

"Dzielenie liczby przez zero (' i/0') lub próba obliczenia pozostałej liczby przez zero ('i% 0') powoduje błąd." - [Język programowania Swift - Advanced Operators] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AdvancedOperators.html) –

Odpowiedz

7

Ogólnie EXC_BAD_INSTRUCTION oznacza, że ​​w kodzie wystąpił błąd potwierdzenia. Dziki przypuszczam, twój Screen.text nie jest liczbą całkowitą. Sprawdź dwukrotnie jego typ.

40

Linia ta

secondNumber = Screen.text!.toInt()! 

oznacza: Get obiektu ekranowego, uzyskać właściwości tekstu i proszę upaść, jeśli nie istnieje, a następnie uzyskać tekst przekształcony do liczby całkowitej, i proszę się zawiesić, jeśli nie robi” t istnieje.

To właśnie! oznacza: To znaczy "jestem pewien, że to coś istnieje, więc proszę, jeśli to nie nastąpi". I tak to się stało.

2

Kopalnia o

dispatch_group_leave(group)

w środku, gdy zamknięcie w bloku. Właśnie przeniosłem to z zamknięcia.

-3

Według mojej pracy wygląda na wyjątek wskaźnika pustego w języku Java. Po prostu sprawdź swój kod, aby nie zainicjować obiektów, które były później używane w kodzie.