Я написал программу, которая подключается к серверу по заданному IP-адресу с использованием протокола NSStream, описанного в руководстве по потоковому программированию Apple. Подключение и передача данных работают безупречно, однако, если пользователь указывает неправильный IP-адрес и программа пытается открыть потоки, это приводит к тому, что программа перестает отвечать на запросы.
Из того, что я прочитал, метод handleEvent обнаруживает потоковые ошибки, однако, когда я проверяю условие, что eventCode == NSStreamEventErrorOccurred, кажется, ничего не происходит. Мой код подключения выглядит следующим образом:
NSString *hostString = ipField.text;
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)hostString, 10001, &readStream, &writeStream);
inputStream = (NSInputStream *)readStream;
outputStream = (NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
Есть идеи, как я могу указать значение тайм-аута или позволить кнопке инициировать закрытие потоков, если не удается установить соединение?