NSStream und Steckdosen, NSStreamDelegate Methoden nicht aufgerufen

Ich habe den guide befolgt Einrichten Socket-Streams und tatsächlich dupliziert den code in meine Klasse. Egal was ich versuche die delegate-Methoden scheinen nicht nur genannt, bekommen.

In der header-Datei habe ich (grundsätzlich):

@interface myClass : NSObject <NSStreamDelegate> {
    NSInputStream *inputStream;
    NSOutputStream *outputStream;
}
- (void)connect;
@end;

Die connect-Methode:

- (void)connect {
    CFReadStreamRef readStream;
    CFWriteStreamRef writeStream;

    CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (CFStringRef)@"host.example.com", 1234, &readStream, &writeStream);

    inputStream = (NSInputStream *)readStream;
    outputStream = (NSOutputStream *)writeStream;
    [inputStream setDelegate:self];
    [outputStream setDelegate:self];
    [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    [inputStream open];
    [outputStream open];
}

Habe auch versucht mit CFStreamCreatePairWithSocketToCFHost() und [NSStream getStreamsToHost:port:inputStream:outputStream: - alle mit exakt dem gleichen Ergebnis.

Habe ich einen Haltepunkt am Anfang der connect Methode, trat durch jede Zeile und jeder Zeiger gültig ist und scheint zu zeigen, um das richtige Objekt.

In GDB, nach der setDelegate fordert po [inputStream delegate] Drucke <myClass: 0x136380> als erwartet, so hat es der Delegierten richtig.

Für das Leben von mir ich kann nicht herausfinden, warum es sich weigert, rufen Sie die stream:handleEvent: Methode an meine Klasse:

- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode {
    NSLog(@"got an event");
}

Hoffentlich habe ich etwas verpasst, wirklich einfach und offensichtlich ist, und ein zweites paar Augen erkennen können, mein Fehler.

Vielen Dank im Voraus, wer hat die Geduld und die Zeit genommen, so weit zu Lesen!

InformationsquelleAutor arrtchiu | 2011-02-08

Schreibe einen Kommentar