実行ループでストリームオブジェクトをスケジュールしており、サーバーは正しい情報などを取得しますが、NSOutputStream への書き込み要求をディスパッチした後、予想よりもかなり遅れてイベントを受け取り、制御フローを台無しにします。NSStreamDelegate プロトコルの次のメソッドを使用してイベントを処理します。
- (void)stream:(NSStream*)theStream handleEvent:(NSStreamEvent)streamEvent
次のようにクエリを呼び出していますが、ループが終了するまでイベントは受信されません。
for (NSMutableArray* objs in allObjs) {
for (Obj* o in objs) {
[self searchQuery:[NSString stringWithFormat:@"%@ foo", o.bar]];
}
}
ディスパッチされた最新のイベントが処理されたかどうかを示すグローバル変数を作成しようとしました。これは、内側の for ループで再度反復する前にループされますが、無期限に実行されます。
内側の for ループで再度反復する前に、クエリからの各結果を正しく待機するにはどうすればよいですか?
前もって感謝します!:)
補足: 私の iOS アプリは、Cesare Rocchi によるこのチュートリアルに従って、Python で作成したサーバーと通信するために TCP ソケットを使用しています。