हाँ! उद्देश्य-सी में, फ़ंक्शन पॉइंटर्स को चयनकर्ता कहा जाता है। यदि आप एक विधि इस तरह परिभाषित किया गया है:
- (void)myFunctionWithObject:(NSObject*)obj otherObject:(NSNumber*)obj2
{
}
चयनकर्ता इस तरह घोषित किया जाता है:
@selector(myFunctionWithObject:otherObject:)
एक वस्तु पर एक चयनकर्ता करने के लिए, आप का उपयोग कर सकते हैं:
[object performSelector:@selector(myFunction)];
या
[object performSelector:@selector(myFunctionTakingParameter:) withObject: o];
से लीक्टर डेटा प्रकार थ्रेड और टाइमर के लिए विशेष रूप से उपयोगी होता है, जहां आप एक थ्रेड भेज सकते हैं और इसे उस संदेश के लिए चयनकर्ता प्रदान कर सकते हैं जिसे आप आमंत्रित करना चाहते हैं। यदि आपको चयनकर्ताओं (या एक प्रेषण तालिका) की एक सरणी बनाने की आवश्यकता है, या यदि आपको एकाधिक पैरामीटर के साथ चयनकर्ताओं को आमंत्रित करने की आवश्यकता है, तो आप एनएसआईएनवोकेशन क्लास का उपयोग कर सकते हैं। यह एक चयनकर्ता के लिए एक रैपर प्रदान करता है और आपको वास्तविक तर्क निर्दिष्ट करने की अनुमति देता है।
आपको यह ध्यान में रखना चाहिए कि उद्देश्य-सी पहले से ही पूरी तरह गतिशील विधि प्रेषण तालिका पर आधारित है। ऐसा लगता है कि चयनकर्ताओं का उपयोग करके फ़ंक्शन पॉइंटर्स को बनाए रखना आपके लिए ठीक काम करेगा यदि आपको किसी फ़ंक्शन के संदर्भ की आवश्यकता है।
स्रोत
2009-07-05 05:04:28
ओह, ठीक है! जेसन, बहुत बहुत धन्यवाद! –