उद्देश्य-सी में एक विधि, एक चयनकर्ता और एक संदेश के बीच क्या अंतर है?विधि और चयनकर्ता के बीच क्या अंतर है?
उत्तर
यह एक बड़ा सवाल है।
चयनकर्ता - एक चयनकर्ता एक विधि के नाम है। आप इन चयनकर्ताओं के साथ बहुत परिचित हैं:
alloc
,init
,release
,dictionaryWithObjectsAndKeys:
,setObject:forKey:
, आदि ध्यान दें कि पेट के चयनकर्ता का हिस्सा है; इस तरह हम पहचानते हैं कि इस विधि को पैरामीटर की आवश्यकता है। इसके अलावा (हालांकि यह बेहद दुर्लभ है), आप इस तरह के चयनकर्ता हो सकते हैं:doFoo:::
। यह एक तरीका है जो तीन मानकों को लेता है, और आप इसे[someObject doFoo:arg1 :arg2 :arg3]
जैसे आह्वान करेंगे। चयनकर्ता घटकों के प्रत्येक भाग से पहले पत्र होने की कोई आवश्यकता नहीं है। जैसा कि मैंने कहा, यह बेहद दुर्लभ है, और आपको कोको ढांचे में उपयोग नहीं किया जाएगा। आप कोको में सीधे चयनकर्ताओं के साथ काम कर सकते हैं। वे प्रकारSEL
है:SEL aSelector = @selector(doSomething:)
याSEL aSelector = NSSelectorFromString(@"doSomething:");
संदेश - संदेश एक चयनकर्ता और तर्क आप इसके साथ भेज रहे है। अगर मैं
[dictionary setObject:obj forKey:key]
कहते हैं, तो "संदेश" चयनकर्ताsetObject:forKey:
प्लस तर्कobj
औरkey
है। बाद में आमंत्रण के लिए संदेशों कोNSInvocation
ऑब्जेक्ट में encapsulated किया जा सकता है। संदेश रिसीवर पर भेजे जाते हैं। (यानी, वह ऑब्जेक्ट जो संदेश प्राप्त करता है)।विधि - एक विधि एक चयनकर्ता और एक कार्यान्वयन (और साथ मेटाडाटा) का एक संयोजन है।"कार्यान्वयन" कोड का वास्तविक ब्लॉक है; यह एक फ़ंक्शन पॉइंटर है (एक
IMP
)।Method
संरचना (रनटाइम से पुनर्प्राप्त करने योग्य) का उपयोग करके आंतरिक रूप से एक वास्तविक विधि को पुनर्प्राप्त किया जा सकता है।
कुछ अन्य संबंधित चीजें हैं जो आप के लिए नहीं पूछा:
विधि हस्ताक्षर - एक विधि हस्ताक्षर डेटा प्रकार से लौट आए और एक विधि द्वारा स्वीकार प्रतिनिधित्व करता है। उन्हें रनटाइम पर
NSMethodSignature
और (कुछ मामलों में) कच्चेchar*
के माध्यम से प्रदर्शित किया जा सकता है।कार्यान्वयन - विधि का वास्तविक निष्पादन योग्य कोड। रनटाइम पर इसका प्रकार
IMP
है, और यह वास्तव में केवल एक फ़ंक्शन पॉइंटर है। आईओएस 4.3 में ब्लॉक कोIMP
में बदलने की नई क्षमता शामिल है। यह है वास्तव में अच्छा है।
मजेदार बातें महसूस करने के लिए की है कि एक विधि (चयनकर्ता) की नाम विधि (IMP) की कार्यान्वयन से अलग है है। इसका मतलब यह है कि यदि आप साहसी महसूस कर रहे हैं, तो आप उन्हें चारों ओर स्वैप कर सकते हैं। आप रनटाइम पर विधियों को भी जोड़ और निकाल सकते हैं, क्योंकि आप जो भी कर रहे हैं वह हैश तालिका में एक प्रविष्टि संपादित कर रहा है: कुंजी चयनकर्ता है, और मान विधि के IMP
है। यह आपको कुछ वास्तव में पागल और trippy सामान करने की अनुमति देता है। यह दिल की बेहोशी के लिए नहीं है। :)
एक विधि कार्यान्वयन जो जब एक वस्तु या वर्ग कुछ कार्रवाई करने के लिए कहा जाता है चलाया जाता है है। यह अपनी कक्षा के दायरे में है और इसलिए किसी अन्य वर्ग के माध्यम से संदर्भित होने पर अलग है। एक चयनकर्ता एक पहचानकर्ता है जो एक विधि के नाम का प्रतिनिधित्व करता है। यह किसी भी विशिष्ट वर्ग या विधि से संबंधित नहीं है, और इसका उपयोग किसी भी वर्ग की विधि का वर्णन करने के लिए किया जा सकता है, भले ही यह कक्षा या उदाहरण विधि हो।
बस एक चयनकर्ता एक शब्दकोश में एक चाबी की तरह है। यह आपको बता सकता है कि कोई किस बारे में बात कर रहा है, लेकिन केवल तभी यदि आपके पास शब्दकोश (कक्षा या वस्तु) भी है। जब आप कुंजी के रूप में चयनकर्ता का उपयोग करके शब्दकोश से मूल्य मांगते हैं तो विधि वह होती है।
इस साइट में सवाल में सभी शब्दावली का एक अच्छा सिंहावलोकन है: लिंक http://www.otierney.net/objective-c.html
चेक बाहर है, लेकिन मैं एक त्वरित सारांश प्रदान करेंगे:
एक विधि समारोह की एक विधि अनिवार्य रूप से पसंद की जाती है कि आप अपनी पसंदीदा प्रोग्रामिंग भाषा में उपयोग किया जाता है।
एक संदेश (लेख से) "एक संदेश को किसी अन्य ऑब्जेक्ट को गतिशील रूप से अग्रेषित किया जा सकता है। उद्देश्य-सी में किसी ऑब्जेक्ट पर एक संदेश को कॉल करने का अर्थ यह नहीं है कि ऑब्जेक्ट उस संदेश को लागू करता है, बस यह जानता है कि इसका जवाब कैसे दिया जाए किसी भी तरह से इसे सीधे लागू करने या किसी ऑब्जेक्ट को संदेश अग्रेषित करने के माध्यम से जो जानता है कि कैसे करें। "
चयनकर्ता दो बातें हो सकता है। यह किसी विधि के नाम का संदर्भ ले सकता है, या "अद्वितीय पहचानकर्ता को संदर्भित करता है जो स्रोत कोड संकलित होने पर नाम को प्रतिस्थापित करता है। संकलित चयनकर्ता प्रकार एसईएल हैं।" (से: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocSelectors.html)
- 1. NavigationService.Navigate() विधि और PhoneApplicationFrame.Source प्रॉपर्टी के बीच क्या अंतर है?
- 2. प्रतिनिधि उदाहरण और विधि सूचक के बीच क्या अंतर है?
- 3. एकाधिक प्रेषण और विधि अधिभार के बीच क्या अंतर है?
- 4. विधि ओवरलोडिंग और ओवरराइडिंग के बीच क्या अंतर है?
- 5. क्या सिंक्रनाइज़ (यह) और सिंक्रनाइज़ विधि के बीच अंतर है
- 6. एसिंक प्रतिनिधि और एसिंक विधि के बीच क्या अंतर है?
- 7. जावा में, this.method() और विधि() के बीच क्या अंतर है?
- 8. विधि और फ़ंक्शन के बीच क्या अंतर है?
- 9. $ ('चयनकर्ता') [0], $ ('चयनकर्ता') के बीच अंतर। Jqery में eq (अनुक्रमणिका)।
- 10. # {} $ {} और% {} के बीच क्या अंतर है?
- 11. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 12. $ और $$ के बीच क्या अंतर है?
- 13. के बीच क्या अंतर है:। और: आर !?
- 14. भिन्नता और '-' के बीच क्या अंतर है?
- 15. "$^एन" और "$ +" के बीच क्या अंतर है?
- 16. क्या प्रतिनिधि/चयनकर्ता और लक्ष्य/कार्रवाई के बीच कोई अंतर है?
- 17. उदाहरणों के बीच अंतर क्या है RespondToSelector और Objective-C में चयनकर्ता का जवाब देता है?
- 18. के बीच क्या अंतर है?
- 19. अंतर और कहां के बीच क्या अंतर है?
- 20. पायथन में स्ट्रिंग विधि और स्ट्र विधि के बीच क्या अंतर है?
- 21. नींद विधि और बहु थ्रेडिंग की उपज विधि के बीच क्या अंतर है?
- 22. एक स्थिर संरचना विधि और स्थैतिक वर्ग विधि के बीच क्या अंतर है?
- 23. पैरामीटर परिभाषाओं के बीच अंतर (प्रकार और नाम), और (प्रकार * नाम) के बीच अंतर क्या हैं?
- 24. अपवाद के .TOString() और मैसेज के बीच क्या अंतर है?
- 25. फ़ायरबग के console.log() और console.debug() के बीच क्या अंतर है?
- 26. url.getFile() और getpath() के बीच क्या अंतर है?
- 27. Request.UserHostAddress और Request.ServerVariables ["REMOTE_ADDR"] के बीच क्या अंतर है। ToString()
- 28. Html.Partial और Html.Action विधियों के बीच क्या अंतर है?
- 29. आरएसपीईसी में stub_model और mock_model के बीच क्या अंतर है?
- 30. file_get_contents और fread बीच क्या अंतर है
संबंधित: [कॉलिंग विधि या संदेश भेजना?] (Http://stackoverflow.com/questions/2852381/calling-a-method-or-sending-a-message-in-objective-c) [विधि फोन या performSelector] (http://stackoverflow.com/questions/2674827/using-self-method-or-selectormethod) समान: हस्ताक्षर और चयनकर्ता] (बीच [अंतर http://stackoverflow.com/questions/3095015/whats -इस-अंतर-बीच-विधि-हस्ताक्षर व-चयनकर्ता-इन-उद्देश्य) –