我發現GCDAsyncSocket的didReadData回調不直觀的一件事是它不會再次調用,除非您發出另一個readData。爲什麼這樣設計?期望圖書館的用戶發起另一個讀取電話以獲得回調或者這是一個設計缺陷是否正確?爲什麼GCDAsyncSocket readData設計爲只讀一次?
例如
- (void)socket:(GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket {
...
// initiate the first read
self.socket = newSocket;
[self.socket readDataWithTimeout:-1 tag:0];
}
- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {
// do what you need with the data...
// read again, or didReadData won't get called!
[self.socket readDataWithTimeout:-1 tag:0];
}