1

次のコードで作成された SocketCommunication クラスがあります

CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)host, port, &readStream, &writeStream);
self.inputStream = (__bridge NSInputStream *)readStream;
self.outputStream = (__bridge NSOutputStream *)writeStream;

_inputStream.delegate = self;
_outputStream.delegate = self;

[_inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[_outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

[_inputStream open];
[_outputStream open];

すべて正常に動作します。ただし、デリゲートは UI スレッドで呼び出されます。場合によっては、データの解析に時間がかかることがあります。

バックグラウンド スレッドでデリゲートを呼び出すように NSInputStream に指示するにはどうすればよいですか?

多分独自の NSRunLoop で?

4

0 に答える 0