搜尋

首頁  >  問答  >  主體

objective-c - GCDAsyncSocket中delegateQueue如果不想使用主執行緒該如何處理回呼?

【問題】我在使用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理解不夠,該如何處理這個地方呢?

謝謝各位

阿神阿神2757 天前468

全部回覆(0)我來回復

無回覆
  • 取消回覆