iPhone: перехват ошибки подключения с помощью NSStream

Я написал программу, которая подключается к серверу по заданному 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];

Есть идеи, как я могу указать значение тайм-аута или разрешить кнопке запускать закрытие потоков, если подключение не может быть установлено?

7
задан isometrik 10 September 2010 в 18:15
поделиться