2012-11-28 10 views
11

का उपयोग कर नीचे अंश में पृष्ठभूमि में कॉल कक्षा विधि,उद्देश्य सी

/*A ClassName with instanceMethod and ClassMethod */ 

-(void)instanceMethod; 

+(void)ClassMethod; 

/*To call a instance method in background */ 

ClassName class1obj = [ClassName alloc] init]; 

[class1obj performSelectorInBackground:@selector(instanceMethod) withObject:nil]; 

इसी तरह, कैसे एक ClassMethod पृष्ठभूमि में performSelectorInBackground का उपयोग कर कॉल करने के लिए?

यदि संभव हो, तो कृपया समझाएं! कृपया लोग हाथ मिलाने ..

उत्तर

18

बस फोन

[ClassName performSelectorInBackground:@selector(ClassMethod) withObject:nil]; 

क्योंकि वर्ग खुद वस्तुओं रहे हैं, इस काम करेंगे।

+1

एक आकर्षण की तरह woked! – itechnician

2

वर्ग के नाम के बजाय self प्रयास करें

[self performSelectorInBackground:@selector(methodTobeCalled) withObject:nil]; 

आशा के लिए इस Wil काम आप

1

आप GCD (ग्रांड सेंट्रल डिस्पैच) है, जो सामान्य समस्या "में कोड निष्पादित करने के लिए कैसे हल करती है पर गौर करना चाहिए पृष्ठ - भूमि"। इससे कोई फर्क नहीं पड़ता कि यह एक क्लास विधि को कॉल कर रहा है, उदाहरण विधि को बुला रहा है, पासा फेंक रहा है, फाइल को लिख रहा है, जो भी हो।

उदाहरण:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    NSLog (@"This is code running in the background"); 
    [MyClass someClassMethod]; 
    [myInstance someMethodWithInt:1 bool:YES string:@"some string"]; 
    NSLog (@"Finished with the background code"); 
}); 

मनमाने ढंग से कोड के साथ काम करता है, चयनकर्ताओं का उपयोग करने की कोई आवश्यकता नहीं है, पृष्ठभूमि में चलाने के लिए चयनकर्ता को सिर्फ लिखने की आवश्यकता नहीं है, एनएसओब्जेक्ट में पैरामीटर को चालू करने की आवश्यकता नहीं है (आप int या Bool तर्क के साथ प्रदर्शन चयनकर्ता का उपयोग नहीं कर सकते हैं)। एक्सकोड स्वचालित रूप से आपके लिए इनमें से अधिकतर भर देगा।