в приложении для iPhone у меня есть сокетное соединение через Wi-Fi, и мне нужно читать из inputStream и записывать в outputStream. Проблема в том, что управление потоками управляется событиями, и мне приходится ждать события NSStreamEventHasBytesAvailable, прежде чем читать. Поэтому я не могу знать при чтении \ записи вне метода делегата handleEvent: eventCode.
Я пробовал цикл 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;
}
}
}
Я думаю, что я мог бы читать \ писать внутри метода делегата, но мне нужно читать \ писать много раз вне этого.
Помощь!
Спасибо