Frage

Als ich eingestellt NSZombieEnabled = Yes nichts auf die Konsole geschrieben wird. Wie kann ich dieses Problem beheben? Oder können Sie mir raten, alle anderen Werkzeuge für eine EXC_BAD_ACCESS?

War es hilfreich?

Lösung

Sie haben einen einfachen alten Absturz. EXC_BAD_ACCESS bedeutet, dass Ihre Anwendung hat versucht, eine Speicheradresse zuzugreifen, die ungültig ist. Während die meisten typischen Grund dafür in einem nicht-GC'd Objective-c-Anwendung ist ein Objekt nach Aufhebung der Zuordnung Messaging, etwas, das Zombie-Modus erkennt, ist diese besondere Crash eine beliebige Anzahl anderer Weise geschehen kann (wie gezeigt).

Da die Anwendung abstürzt, sollten Sie einen Backtrace haben. Sie brauchen das Backtrace hier, um für jeden von uns in der Lage zu sein, Ihnen weiter zu helfen.

Wie Brad sagte, führen Sie Ihre Anwendung mit Debugging aktiviert. In Xcode, werden Sie die „Run / Debug“ Menüpunkt unter dem Menü „Ausführen“ finden. Verwenden Sie, dass ein. Wenn die Anwendung abstürzt, sollten Sie einen Stack-Trace in der oberen linken Ecke des Debuggers Fenster.

Nein, wirklich, sie im Debugger angezeigt. Ein Bild ist 1.000 Wörter wert. alt text
(Quelle: friday.com )

Andere Tipps

„EXC_BAD_ACCESS“ ist nicht notwendigerweise auf eine Zombie-Instanz verwendet. Es kann einen Zugriff auf eine nicht definierten Referenz verknüpft werden, wie eine lokale Variable.

NSArray *array;
[array objectAtIndex:0]; // <- Will throw an error

Edit: NSZombie Flagge werden Ihnen nur helfen, die „EXC_BAD_ACCESS“ durch die Verwendung einer de-zugewiesen Instanz ausgelöst zu lösen.

Um die Fehler zu lösen, haben Sie den Crash-Backtrace verwenden, um die Position zu bestimmen, die falsch ist. Dann gehen Sie zurück in Ihren Code und überprüft jede Zuordnung und Zuweisungen.

Auch stellen Sie sicher, dass alle Zeiger auf Null initialisiert werden, bevor sie mit!

Wenn Sie einen Zeiger verwenden, ohne es zu null oder einem anderen Objekt initialisiert wird, Sie gehen zu propably Zugriff auf den Speicher am Ende, das ist nicht deine.

Zum Beispiel der folgende Code wird auch ein EXC_BAD_ACCESS geben, das nicht die NSZombieEnabled Flagge von der letzten Zeile verursacht rückverfolgbar werden.

RecordingLocation* closest;

//find the closest recording location
for (...)
{
    //try to find the closest object...
    //suppose we don't find anything so closest is never set.
}

if (closest!=nil)
    NSLog(@"Closest: %f,%f",closest.x,closest.y);

Ich verstehe nicht, wie die Antwort auf diese Frage wirklich beantwortet die Frage ..

Ich frage mich dasselbe. mit xcode4 ich habe NSZobmieEnabled = YES aktiviert zu stoppen, wenn ich ein Objekt zuzugreifen, anstatt Absturz mit EXC_BAD_ACCESS freigegeben wurde -. das ist sehr hilfreich

die Frage auf der Hand war:

„Wenn ich NSZombieEnabled gesetzt = Ja nichts auf die Konsole geschrieben wird. Wie kann ich dieses Problem beheben ...“.

einfach und geradlinig.

Ich erlebe das gleiche Problem. Xcode hält mit dem Debugger, aber die Konsole erzeugt keine Nachricht.

: Ich möchte etwas entlang der Linien von erwarten

"Nachricht an deallokierten Instanz gesendet ...".

Sie href="https://stackoverflow.com/search?q=%5Biphone%5D+EXC_BAD_ACCESS"> suchen, finden Sie eine Reihe von Menschen mit der finden gleiches Problem, das Sie haben. Die überwiegende Mehrheit der Zeit, dass Sie diese schlagen, stoßen Sie Speicherprobleme. Wenn Sie das Protokoll folgen beschrieben hier oder hier , und Sie sind keine Berichte über Nachrichten zu sehen gesendet um Objekte auf der Konsole veröffentlicht, könnte es etwas anderes sein.

Haben Sie versucht, die Anwendung im Debugger starten (Start | Debug - Breakpoints On)? Sobald Sie die EXC_BAD_ACCESS treffen, sollte der Debugger stoppen. Wenn Sie an der Backtrace im Debugger (Run | Debugger) angezeigt aussehen., Es könnte Ihnen zeigen, wo der Fehler aufgetreten ist

Wie ich gerade eine glücklichen 20 Minuten damit verbracht, diese starren mit NSZombieEnabled nicht funktioniert, dachte ich, dass ich dieses eine EXC_BAD_ACCESS verursacht hinzufügen würde

NSArray *arr = [NSArray arrayWithObjects:@"@dog","@cat",nil];

Beachten Sie die fehlende ‚@‘ auf dem zweiten param. Ich habe nicht: -)

Ich hatte eine andere Erfahrung mit EXC_BAD_ACCESS, so würde ich teilen.

Wie in den Fragen angegeben, obwohl NSZombieEnabled geprüft wurde, wurde nichts in die Konsole geschrieben. Nach mehreren Stunden im Simulator zu kämpfen, habe ich beschlossen, es auf das Gerät zu installieren. Die Fehlermeldung, die ich von dem Debuggen mit dem Gerät bekam, war mehr hilfreich.

Schließlich bemerkte ich, dass ich war immer EXC_BAD_ACCESS Fehler und seltsames Verhalten, weil ich vor dem umbenannt ein paar xib Dateien einen Tag. Ich wählte das Objekt 'View Controller' für MainWindow.xib Datei und korrigiert die NIB-Name Eigenschaft. Dann alles funktionierte reibungslos.

Ich denke nicht jeder EXC_BAD_ACCESS durch NSZombie Aktivieren .. gefunden
Da einige Fälle, ich bin auch nicht Ergebnis zu erzielen, während Zombie mit ..
Ich denke nur EXC_BAD_ACCESS im Zusammenhang mit der Verwendung des freigesetzten Objekts kann durch Aktivierung des Zombies sehen.

Und noch eine Frage, die ich festgestellt, während Zombie mit ist: Manchmal auch Abstürze Es verursacht zu debuggen. Ein Fall, den ich gefangen abgestürzt ist, zeigt:
*** -[MagazineWebview respondsToSelector:]: message sent to deallocated instance 0x58ce2a0
Es geschieht nur, wenn ermöglicht NSZombie.

Was ich tue, ist,
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
Ich lassen Sie die aktuelle „MagazineWebview“ Objekt und laden die angegebene [URL] in einem anderen „MagazineWebview“ Objekt. Für achiving meine einige Funktionalitäten ...

Dank

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top