Alle,
Ich habe es bis hierher durch Kommentare, Breakpoints usw. heruntergefahren. Das Programm stürzt bei dem markierten Code ab.
%Vor%Es stürzt nicht ab, wenn ich beide auskommentiere, aber es stürzt ab, wenn ich einen ausdepretiere (das heißt, beide verursachen das Absturz des Programms). Es gibt auch keine Informationen, die im Debugger gepostet werden. Alles was es tut, ist mich nach main.m zu schicken und mir zu zeigen
"Thread 1: Programm empfangenes Signal:" EXC_BAD_ACCESS ".
Danke für die Hilfe im Voraus!
Bearbeiten: Hier ist meine Delegate-Methode, aber es zeigt nicht einmal die zweite aktive Zeile im Protokoll.
%Vor%Was passiert, ist, dass die Zuweisung der Instanz der Delegate-Klasse aufgehoben wird (was EXC_BAD_ACCESS in der Ausführungsschleife verursacht), entweder weil Sie sie nicht beibehalten haben oder Sie ARC verwenden (ziemlich wahrscheinlich) und Sie keine Referenz haben zu ihm.
Die Lösung besteht darin, entweder in der Delegate-Klasse "retain" aufzurufen, ungefähr so:
%Vor%Oder wenn ARC aktiviert ist, erstellen Sie eine Instanzvariable in der Klasse, in der Sie den Delegaten zuweisen, und speichern Sie dort Ihre Instanz der Verbindung. Auf diese Weise wird ARC die Zuordnung nicht aufheben, da die Instanzvar als Referenz zählt.
Wenn Sie ARC verwenden, werfen Sie die Streams folgendermaßen:
%Vor%Dies sollte den Absturz verhindern. Beachten Sie, dass, wenn Ihre Streams einem separaten Thread als dem Hauptthread gehören, die Run-Schleife manuell aufgerufen werden muss, indem Sie die Methode run nach dem Öffnen der Streams verwenden.
Ich hatte ein ähnliches Problem, bei dem meine App im Callback -handleEvent mit einer riesigen streamEvent-Nummer abstürzen würde. Ich löste es, indem ich sicherstellte, dass ich die NStream-Objekte (Eingabe und Ausgabe) AND in der Methode -init des NetworkClient-Objekts initiierte, die mein VC verwenden wollte.
Tags und Links objective-c iphone xcode nsstream