NStreams Absturz-Programm!

8

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%     
Baub 13.07.2011, 22:26
quelle

5 Antworten

1

Als ich dies in meinen View Controller (und nicht in eine separate Klasse) gestellt habe, hat es perfekt funktioniert.

    
Baub 18.07.2011, 16:21
quelle
4

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.

    
arjunyg 27.05.2013 15:52
quelle
2

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.

    
Anand 27.02.2014 08:26
quelle
0

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.

    
Sai Ramachandran 06.04.2013 19:48
quelle
-2

Probieren Sie es einmal aus,

NSInputStream * inputStream = objc_unretetainedObject (readStream);

Kann ein Casting-Problem sein

    
Futur 14.07.2011 09:20
quelle

Tags und Links