【問題】我在使用GCDAsyncSocket進行Tcp Socket處理,如果在主程式中,我可以正常處理結果的回調,但我想將Socket的處理封裝在一個庫中,在該庫中完成Socket初始化和訊息接收處理,但卻發現不知該如何才能觸發到回調了?
【程式碼】
如果在主執行緒直接這麼處理:
初始化
GCDAsyncSocket *_socket;
_socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
進行連接 Connect
[self._tcpSocket connectToHost:deviceIp onPort:SERVERPORT error:&err]
此時連線成功的回呼是可以正常觸發的
-(void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port
{
NSLog(@"didConnectToHost call");
}
但如果我將以上流程放在庫中,透過主程式來呼叫的話,那麼didConnectToHost這個回呼就沒辦法觸發到
我認為是我對_socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];這個delegate和delegateQueue理解不夠,該如何處理這個地方呢?
謝謝各位