खोज…


NSInvocation उद्देश्य-सी

इस मूल पोस्ट को देखें

Apple के NSInvocation वर्ग संदर्भ के अनुसार:

NSInvocation एक ऑब्जेक्टिव-सी संदेश है जो स्टैटिक प्रदान किया गया है, यानी यह एक एक्शन है जिसे ऑब्जेक्ट में बदल दिया गया है।

और, थोड़ा और विस्तार में:

संदेशों की अवधारणा उद्देश्य-सी दर्शन के लिए केंद्रीय है। जब भी आप किसी विधि को कॉल करते हैं, या किसी ऑब्जेक्ट के एक वैरिएबल तक पहुंचते हैं, तो आप इसे एक संदेश भेज रहे हैं। NSInvocation तब काम में आती है जब आप किसी वस्तु को समय पर किसी भिन्न बिंदु पर संदेश भेजना चाहते हैं, या एक ही संदेश को कई बार भेजना चाहते हैं। NSInvocation आपको उस संदेश का वर्णन करने की अनुमति देता है जिसे आप भेजने जा रहे हैं, और फिर इसे लागू करें (वास्तव में इसे बाद में लक्ष्य ऑब्जेक्ट पर भेजें)।


उदाहरण के लिए, मान लें कि आप किसी सरणी में स्ट्रिंग जोड़ना चाहते हैं। आप आम तौर पर addObject: संदेश इस प्रकार है:

[myArray addObject:myString];

अब, NSInvocation लें कि आप NSInvocation का उपयोग इस संदेश को समय पर किसी अन्य बिंदु पर भेजने के लिए करना चाहते हैं:

सबसे पहले, आप NSMutableArray के addObject: साथ उपयोग के लिए एक NSInvocation ऑब्जेक्ट तैयार करेंगे addObject: चयनकर्ता:

NSMethodSignature * mySignature = [NSMutableArray
    instanceMethodSignatureForSelector:@selector(addObject:)];
NSInvocation * myInvocation = [NSInvocation
    invocationWithMethodSignature:mySignature];

इसके बाद, आप निर्दिष्ट करेंगे कि किस वस्तु को संदेश भेजना है:

[myInvocation setTarget:myArray];

उस ऑब्जेक्ट पर भेजने के लिए इच्छित संदेश निर्दिष्ट करें:

[myInvocation setSelector:@selector(addObject:)];

और उस विधि के लिए किसी भी तर्क को भरें:

[myInvocation setArgument:&myString atIndex:2];

ध्यान दें कि ऑब्जेक्ट तर्कों को पॉइंटर द्वारा पारित किया जाना चाहिए। रेयान मैककौइग को धन्यवाद कि बाहर इशारा करने के लिए, और अधिक जानकारी के लिए कृपया Apple के दस्तावेज देखें।

इस बिंदु पर, myInvocation एक संपूर्ण ऑब्जेक्ट है, जो एक संदेश भेजना बताता है। संदेश भेजने के लिए, आप कॉल करेंगे:

[myInvocation invoke];

यह अंतिम चरण संदेश भेजने का कारण होगा, अनिवार्य रूप से निष्पादित करना [myArray addObject:myString];

इसे ऐसे समझें जैसे ईमेल भेजना। आप एक नया ईमेल ( NSInvocation ऑब्जेक्ट) खोलते हैं, उस व्यक्ति (ऑब्जेक्ट) के पते को भरें जिसे आप इसे भेजना चाहते हैं, प्राप्तकर्ता के लिए एक संदेश टाइप करें (एक selector और तर्क निर्दिष्ट करें), और फिर "भेजें" पर क्लिक करें (call invoke )।

अधिक जानकारी के लिए NSInvocation का उपयोग करना देखें।


NSUndoManager NSInvocation ऑब्जेक्ट्स का उपयोग करता है ताकि वह आदेशों को उलट सके। अनिवार्य रूप से, आप जो कर रहे हैं वह कहने के लिए एक NSInvocation ऑब्जेक्ट बना रहा है: "अरे, यदि आप जो मैंने अभी किया है उसे पूर्ववत करना चाहते हैं, तो इन तर्कों के साथ उस ऑब्जेक्ट को यह संदेश भेजें"। आप NSUndoManager को NSInvocation ऑब्जेक्ट NSUndoManager , और यह उस ऑब्जेक्ट को NSUndoManager कार्यों की एक सरणी में जोड़ता है। यदि उपयोगकर्ता "पूर्ववत करें" कहता है, तो NSUndoManager केवल सरणी में सबसे हाल की कार्रवाई को देखता है, और आवश्यक कार्रवाई करने के लिए संग्रहीत NSInvocation ऑब्जेक्ट को आमंत्रित करता है।

अधिक विवरण के लिए पूर्ववत संचालन रजिस्टर देखें।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow