चलाएं तो मैं एक नया एनएसटीएचड शुरू कर रहा हूं जिसे मैं performSelector:onThread:...
पर कॉल करके बाद में उपयोग करने में सक्षम होना चाहता हूं। मैं इसे समझने के तरीके से कहता हूं कि उस पद्धति को उस थ्रेड पर रनलोप में कॉल करें, इसलिए इसके अगले पुनरावृत्ति पर यह इन सभी कॉलों को पॉप करेगा और बाद में उन्हें कॉल करने के लिए कुछ भी नहीं छोड़ा जाएगा। तो मुझे इस तरह की कार्यक्षमता की आवश्यकता है, एक निष्क्रिय धागा काम के लिए तैयार है जिसे मैं बस उस पर बुला सकता हूं। मेरे वर्तमान कोड इस तरह दिखता है:एनएसटीएचडी को जिंदा रखें और एनएसआरन लूप को
- (void)doInitialize
{
mThread = [[NSThread alloc] initWithTarget:self selector:@selector(runThread) object:nil];
[mthread start];
}
- (void)runThread
{
NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init];
// From what I understand from the Google machine is that this call should start the
// runloop on this thread, but it DOESN'T. The thread dies and is un-callable
[[NSRunLoop currentRunLoop] run];
[pool drain];
}
- (void)scheduleSomethingOnThread
{
[self performSelector:@selector(hardWork) onThread:mThread withObject:nil waitUntilDone:NO];
}
लेकिन धागा जिंदा रखा नहीं है, और performSelector: onThread कुछ भी नहीं है। मैं इस बारे में सही तरीके से कैसे जा सकता हूं?
धन्यवाद धागा मजबूर करना चाहिए यह अब थोड़ा स्पष्ट है। – ErikPerik
यह कमांड लाइन उपकरण में मुख्य रन लूप के बारे में भी सच है। यह एनएस/यूआईएप्लिकेशंस है जो जीयूआई एप्लिकेशन में मुख्य रन लूप पर डिफ़ॉल्ट इनपुट स्रोत प्रदान करता है। –