-[NSCFData writeStreamHandleEvent:]: unrecognized selector sent to instance in a stream callback
- by user295491
Hi everyone,
I am working with streams and sockets in iPhone SDK 3.1.3 the issue is when the program accept a callback and I want to handle this writestream callback the following error is triggered  " Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: ' -[NSCFData writeStreamHandleEvent:]: unrecognized selector sent to instance 0x17bc70'" But I don't know how to solve it because everything seems fine. Even when I run the debugger there is no error the program works. Any hint here will help! 
The code of the callback is:
void myWriteStreamCallBack (CFWriteStreamRef stream, CFStreamEventType eventType, void *info){  
   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
   Connection *handlerEv = [(Connection *)info retain] autorelease];
   [handlerEv writeStreamHandleEvent:eventType];
   [pool release];  
}
The code of the writeStreamHandleEvent:
- (void)writeStreamHandleEvent:(CFStreamEventType) eventType{
    switch(eventType) {
        case kCFStreamEventOpenCompleted:
            writeStreamOpen = YES;
            break;
        case kCFStreamEventCanAcceptBytes:
            NSLog(@"Writing in the stream");
            [self writeOutgoingBufferToStream];
            break;
        case kCFStreamEventErrorOccurred:
            error = CFWriteStreamGetError(writeStream);
            fprintf(stderr, "CFReadStreamGetError returned (%ld, %ld)\n", error.domain, error.error);
            CFWriteStreamUnscheduleFromRunLoop(writeStream, CFRunLoopGetCurrent(),kCFRunLoopCommonModes);
            CFWriteStreamClose(writeStream);
            CFRelease(writeStream);
            break;
        case kCFStreamEventEndEncountered:
            CFWriteStreamUnscheduleFromRunLoop(writeStream, CFRunLoopGetCurrent(),kCFRunLoopCommonModes);
            CFWriteStreamClose(writeStream);
            CFRelease(writeStream);
            break;
    }
}
The code of the stream configuration:
CFSocketContext ctx = {0, self, nil, nil, nil};
CFWriteStreamSetClient (writeStream,registeredEvents,                               (CFWriteStreamClientCallBack)&myWriteStreamCallBack,(CFStreamClientContext *)(&ctx) );
CFWriteStreamScheduleWithRunLoop (writeStream, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
You can see that there is nothing strange!, well at least I don't see it.
Thank you in advance.