2015-03-02 11 views
19

ho ottenuto questo errore:cosa significa Error "Thread 1: EXC_BAD_INSTRUCTION (code = EXC_I386_INVOP, subcode = 0x0)"?

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

Come posso risolvere questo problema? Il codice funziona normalmente, ma nella calcolatrice quando faccio clic sul pulsante solo uguale, viene restituito quell'errore.

@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

In questa riga 'result = firstNumber/secondNumber' cosa succede quando' secondNumber' è uguale a zero? –

+0

sì, ho capito che non è definito, quindi come posso risolverlo? – legolas

+0

"Dividere un numero per zero (' i/0'), o provare a calcolare il resto per zero ('i% 0'), causa un errore." - [The Swift Programming Language - Advanced Operators] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AdvancedOperators.html) –

risposta

7

In genere, EXC_BAD_INSTRUCTION indica che c'è stato un errore di asserzione nel codice. Un'ipotesi selvaggia, il tuo Screen.text non è un numero intero. Ricontrolla il suo tipo

40

Questa linea

secondNumber = Screen.text!.toInt()! 

significa: Prendi l'oggetto Screen, ottenere la proprietà di testo e vi prego di crash se non esiste, quindi ottenere il testo convertito in un intero, e vi prego di crash se doesn' Esistono

Ecco cosa! significa: significa "Sono sicuro che questa cosa esiste, quindi per favore si blocca se non lo fa". E questo è quello che ha fatto.

2

miniera era circa

dispatch_group_leave(group)

era dentro se la chiusura a blocco. L'ho appena spostato fuori dalla chiusura.

-3

Secondo il mio lavoro, sembra un'eccezione di puntatore nullo in java. Basta controllare il codice per gli oggetti non inizializzati utilizzati in seguito nel codice.

Problemi correlati