Я хочу имитировать связь с сервером. Поскольку удаленный сервер будет иметь некоторые задержки я хочу использовать фоновый поток, который имеет на этоNSThread sleepfortimeinterval блокирует основную нить
[NSThread sleepForTimeInterval:timeoutTillAnswer];
нить создается с NSThread определением подклассов и начал ... Однако я заметил, что sleepForTimeInterval блокирует основной поток. .. Зачем??? По умолчанию это не NSThread backgroundThread?
Это как создается поток:
self.botThread = [[PSBotThread alloc] init];
[self.botThread start];
Дополнительная информация: Это бот нить 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];
}
Я хочу назвать "messageForBot" от основного потока ... также фоновый поток должен вызывать метод на основном потоке для связи. Сон для временного интервала внутри объекта gManager ....
Покажите, как вы создаете поток , что он делает и когда вы вызываете 'sleepForTimeInterval:' (который задерживает текущий поток в время, когда оно называется). – Wain
Вот как я создаю нить ... [self.botThread start]; ... Это вызывает основной метод NSThread PSBotThread. – user1028028
Но что он делает? Где находится 'sleepForTimeInterval'? – Wain