मैं एक सर्वर के साथ एक संचार अनुकरण करना चाहते हैं। दूरस्थ सर्वर कुछ देरी होगा जैसा कि मैंने एक पृष्ठभूमि धागा है पर यहNSThread sleepfortimeinterval ब्लॉक मुख्य थ्रेड
[NSThread sleepForTimeInterval:timeoutTillAnswer];
धागा NSThread उप classing साथ बनाया है और शुरू होता है का उपयोग करना चाहते ... लेकिन मैंने देखा है कि sleepForTimeInterval मुख्य थ्रेड ब्लॉक कर रहा है। .. क्यूं कर??? पृष्ठभूमि को एनएसटीएचड नहीं किया गया है डिफ़ॉल्ट रूप से थ्रेड?
यह कैसे धागा बनाया जाता है:
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 ऑब्जेक्ट के अंदर में समय intervail के लिए .. संवाद करने के लिए नींद
दिखाएँ कैसे आप धागा बना रहे हैं , यह क्या करता है और जब आप 'sleepForTimeInterval:' कहते हैं (जो वर्तमान धागे को देरी करता है जिस समय इसे बुलाया जाता है)। – Wain
इस तरह मैं धागा बना रहा हूं ... [self.bot थ्रेड शुरू करें]; ... वह एनएसटीएचड सबक्लास PSBotThread मुख्य विधि को कॉल करता है .. – user1028028
लेकिन यह क्या करता है? 'SleepForTimeInterval' कहां है? – Wain