NSThread sleepfortimeinterval blockiert den Hauptthread

Ich möchte eine Kommunikation mit einem Server simulieren. Da der Remote-Server einige Verzögerungen haben wird, möchte ich einen Hintergrund-Thread verwenden, der darauf ist

 [NSThread sleepForTimeInterval:timeoutTillAnswer];

Der Thread wird mit der Unterklasse NSThread erstellt und gestartet ... Allerdings ist mir aufgefallen, dass sleepForTimeInterval den Hauptthread blockiert ... Warum ??? Ist ein NSThread nicht standardmäßig ein backgroundThread?

So wird der Thread erstellt:

   self.botThread = [[PSBotThread alloc] init];
    [self.botThread start];

Weitere Infos: Dies ist die Bot-Thread-Unterklasse

- (void)main
{
    @autoreleasepool {
        self.gManager = [[PSGameManager alloc] init];
        self.comManager = [[PSComManager alloc] init];
        self.bot = [[PSBotPlayer alloc] initWithName:@"Botus" andXP:[NSNumber numberWithInteger:1500]];
        self.gManager.localPlayer = self.bot;
        self.gManager.comDelegate = self.comManager;
        self.gManager.tillTheEndGame = NO;
        self.gManager.localDelegate = self.bot;
        self.comManager.gameManDelegate = self.gManager;
        self.comManager.isBackgroundThread = YES;
        self.comManager.logginEnabled = NO;
        self.gManager.logginEnabled = NO;
        self.bot.gameDelegate = self.gManager;
        BOOL isAlive = YES;
        // set up a run loop
        NSRunLoop *runloop = [NSRunLoop currentRunLoop];
        [runloop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
        [self.gManager beginGameSP];
        while (isAlive) { // 'isAlive' is a variable that is used to control the thread existence...
            [runloop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
        }



    }
}

- (void)messageForBot:(NSData *)msg
{
    [self.comManager didReceiveMessage:msg];
}

Ich möchte "messageForBot" aus dem Hauptthread aufrufen ... auch der Hintergrundthread sollte eine Methode für den Hauptthread aufrufen, um zu kommunizieren.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage