Ich bekomme eine EXC_BAD_ACCESS (SIGBUS) in dieser Zeile in meinem iPhone-Projekt:
%Vor%Was mich stupst, ist, dass ich nicht verstehe, wie diese Zeile abstürzen könnte, da die if-Anweisung auf Null überprüft werden soll. Missverstehe ich die Funktionsweise von Objective-C oder haben die Zeilennummern in Absturzanweisungen manchmal die falsche Zeile?
Nur weil eine Variable auf einen anderen Wert als nil
gesetzt ist, heißt das nicht, dass sie auf ein gültiges Objekt verweist. Zum Beispiel:
Ihr Timer wurde wahrscheinlich schon gelöscht (oder wurde möglicherweise gar nicht erstellt?), aber die Variable wurde nicht auf Null gesetzt.
Ich bin gerade auf ein ähnliches Problem gestoßen. Hier ist ein weiteres Beispiel dafür, dass eine Überprüfung wie die Ihre fehlschlagen könnte.
In meinem Fall erhielt ich den Wert aus einem Wörterbuch wie folgt:
%Vor%Später habe ich die Variable folgendermaßen benutzt:
%Vor% Dies führte zu einem EXC_BAD_ACCESS
Fehler und Programmabsturz.
Das Problem war, dass mein Wörterbuch NSNull
-Werte in Fällen verwendete, in denen ein Objekt einen leeren Wert hatte (es wurde aus JSON deserialisiert), da NSDictionary
keine Nullwerte enthalten kann. Am Ende habe ich so herumgearbeitet:
Sie sollten gleich sein. Vielleicht ist die Zeilennummer tatsächlich falsch.
Suchen Sie nach anderen möglichen Fehlern in der Nähe Ihres Codes und sehen Sie, ob Sie etwas finden.
Tags und Links objective-c iphone