2015-03-02 18 views
19

bu hata var:Hata "Konu 1: EXC_BAD_INSTRUCTION (kod = EXC_I386_INVOP, alt kod = 0x0)" ne anlama geliyor?

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

Bunu çözebilir nasıl? Kod normal çalışıyor, ancak sadece eşit düğmeye tıkladığımda hesap makinesinde bu hatayı veriyor.

@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

Bu satırda 'result = firstNumber/secondNumber' 'secondNumber' sıfıra eşit olduğunda ne olur? –

+0

Evet, bunu tanımlanmamış, nasıl düzeltebilirim? – legolas

+0

"Bir sayıyı sıfıra bölme (' i/0 ') veya kalanını sıfıra ('i% 0') hesaplamaya çalışmak bir hataya neden olur." - [Hızlı Programlama Dili - Gelişmiş Operatörler] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AdvancedOperators.html) –

cevap

7

Genel olarak, EXC_BAD_INSTRUCTION, kodunuzda bir onaylama hatası olduğunu gösterir. Vahşi bir tahmin, senin Screen.text bir tamsayı değil. Türünü iki kere kontrol et.

40

Bu hat

secondNumber = Screen.text!.toInt()! 

şu anlama gelir: Metin özelliği olsun, Ekran nesneyi alın ve onu yoksa o zaman kilitlenmesine metin bir tamsayı dönüştürülür olsun ve bu kötü kokan eğer çökmesine lütfen lütfen var.

İşte bu! anlamına gelir: "Bu şeyin var olduğundan emin olduğum anlamına gelir, o yüzden lütfen" çökerse lütfen kilitlenin ". Ve işte böyle yaptı. içeride

2

Mine yaklaşık

dispatch_group_leave(group)

idi eğer bloğunda kapatma. Sadece kapatıldım.

-3

İşime göre, java'da boş gösterici istisnası gibi görünüyor. Sadece kodunuzda daha sonra kullanılan başlatılmamış nesneler için kodunuzu kontrol edin.

İlgili konular