次のコードを使用して、メイン実行ループでイベントをスケジュールしています。
[stream setDelegate:self];
[stream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
[stream open];
これは、NSStreamDelegate
イベントがメインの実行ループでスケジュールされていることを意味しているため、十分な頻度でUIの応答性に影響を与える可能性があると思います。これは確かに私のプログラムの場合のようです-たとえイベントハンドラーがそれ自体で多くの作業を行わずにバックグラウンドスレッドにデタッチしたとしても。
実行ループ以外のスケジューリングについてはどうすればよいmainRunLoop
ですか?スレッドを作成する必要がありますか?NSRunLoopを直接作成できますか?どのようなセットアップを実行する必要がありますか?