Я знаю, что отправляю ответ на очень старый вопрос. В случае, если вы (посетитель / stackoverflow {любовник / пользователи}) хотите закодировать свой собственный асинхронный сокет. Все, что вам нужно сделать, это отсоединить собственный дескриптор сокета от подключенного объекта CFSocketRef.
void TCPClientCallBackHandler(CFSocketRef s, CFSocketCallBackType callbacktype,CFDataRef address, const void *data,void *info){
ClientSocket *obj_client_ptr=(__bridge ClientSocket*)info;
switch (callbacktype) {
case kCFSocketConnectCallBack :
if(data){
[obj_client_ptr StopClient];
}
else{ //detach socket started
CFSocketNativeHandle handle=CFSocketGetNative(s);
CFSocketSetSocketFlags(s, 0);
CFSocketInvalidate(s);
CFRelease(s);
s=nil;//detach socket ended
[obj_client_ptr ConfigureStream:handle];
// handle pass to CFStreamCreatePairWithSocket then bridge to NSStream
}
break;
}
}
если до сих пор не получил, то посмотрите на youtube:
https://www.youtube.com/watch?v=bJP4nysTmnI