Ist in Objective-C (Variable) dasselbe wie if (Variable! = nil)

7

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?

    
rustyshelf 11.02.2009, 01:47
quelle

3 Antworten

16

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:

%Vor%

Ihr Timer wurde wahrscheinlich schon gelöscht (oder wurde möglicherweise gar nicht erstellt?), aber die Variable wurde nicht auf Null gesetzt.

    
Chuck 11.02.2009, 01:53
quelle
6

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:

%Vor%     
Mirko Froehlich 13.11.2009 20:07
quelle
-1

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.

    
Sophie Alpert 11.02.2009 01:49
quelle

Tags und Links