NSStream и Sockets, методы NSStreamDelegate не вызываются

Я следовал руководству Настройка потоков сокетов и эффективно продублировал этот код в своем классе. Независимо от того, что я пробую, методы делегата, похоже, просто не вызываются.

В заголовочном файле у меня есть (в основном):

@interface myClass : NSObject  {
    NSInputStream *inputStream;
    NSOutputStream *outputStream;
}
- (void)connect;
@end;

Метод подключения:

- (void)connect {
    CFReadStreamRef readStream;
    CFWriteStreamRef writeStream;

    CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (CFStringRef)@"host.example.com", 1234, &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];
}

Также пробовал использовать CFStreamCreatePairWithSocketToCFHost () и [NSStream getStreamsToHost: port: inputStream: outputStream: - все с точно таким же результатом.

Я установил точку останова в начале метода connect , ...

У меня возникла проблема с дизайном при отправке значения индикатора выполнения из класса, вызываемого из класса Thread in Activity, для обновления графического интерфейса пользователя, как показано ниже

[Фрагмент кода не компилируется только для объяснения]:

Class A : Extend Activity {
  new Thread(new Runnable() 
    {
       public void run() 
       {
            B objB = new B();
            objB.DownloadFile();
        }
    }).start();
}

Class B {
    public void DownloadFile()
    {
       ... some work [preparing SOAP request]
       while(response.read())
       {
         //send calculated progress to Class A to update the progress value
       }

    }

}

Любая помощь или руководство будут очень благодарны

6
задан Ahmad Kayyali 17 February 2013 в 08:31
поделиться