Я написал программу, которая подключается к серверу по заданному IP-адресу с использованием протокола NSStream, описанного в руководстве Apple по потоковому программированию. Подключение и передача данных работает безупречно, однако, если пользователь указывает неправильный IP-адрес и программа пытается открыть потоки, это приводит к тому, что программа перестает отвечать.
Из того, что я прочитал, метод handleEvent обнаруживает ошибки потока, однако, когда я проверяю условие, что eventCode = = NSStreamEventError Произошла ошибка, похоже, ничего не произошло. Мой код подключения следующий:
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];
Есть идеи, как я могу указать значение тайм-аута или разрешить кнопке запускать закрытие потоков, если подключение не может быть установлено?