Je souhaite simuler une communication avec un serveur. Comme le serveur distant aura des retards que je veux utiliser un fil d'arrière-plan qui a sur elleNSThread sleepfortimeinterval bloque le thread principal
[NSThread sleepForTimeInterval:timeoutTillAnswer];
Le fil est créé avec NSThread sous classage et a commencé ... Cependant, je remarque que sleepForTimeInterval bloque le thread principal. .. Pourquoi??? NSThread n'est-il pas un backgroundThread par défaut?
Voici comment le fil est créé:
self.botThread = [[PSBotThread alloc] init];
[self.botThread start];
Plus d'info: Ce est le fil conducteur bot subclas
- (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];
}
Je veux appeler "messageForBot" du fil conducteur ... aussi le thread d'arrière-plan devrait appeler une méthode sur le thread principal pour communiquer .. Le sommeil pour intervail temps dans l'intérieur de l'objet gManager ....
Montrez comment vous créez le fil , ce qu'il fait et quand vous appelez 'sleepForTimeInterval:' (qui retarde le thread en cours à le moment où ça s'appelle). – Wain
Voilà comment je crée le fil ... [self.botThread start]; ... Cela appelle la méthode principale PSBotThread de la sous-classe NSThread ... – user1028028
Mais que fait-il? Où est le 'sleepForTimeInterval'? – Wain