iPhone アプリでは、wifi 経由のソケット接続があり、inputStream から読み取り、outputStream に書き込む必要があります。問題は、ストリーム管理がイベント駆動型であり、読み取る前にイベント NSStreamEventHasBytesAvailable を待たなければならないことです。したがって、handleEvent:eventCode デリゲート メソッドの外側でいつ読み書きするかわかりません。
while ループを試してみましたが、while ループ中にアプリがデリゲート メッセージを受信せず、停止しないことに気付きました。
擬似コード:
-(void) myFunction {
canRead=NO;
[self writeToStream:someData];
while(!canRead) { };
readData=[self readFromStream];
}
- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode {
switch(eventCode) {
case NSStreamEventHasBytesAvailable: {
canRead=YES;
break;
}
}
}
デリゲート メソッド内では読み書きできると思いますが、その外側では何度も読み書きする必要があります。
ヘルプ!ありがとうございました