मेरे द्वारा देखा गया एकमात्र अंतर यह है कि respondsToSelector
का रिसीवर या तो कक्षा या एक उदाहरण हो सकता है, जबकि instancesRespondToSelector
में केवल क्लास रिसीवर हो सकता है। और क्या उन्हें अलग बनाता है, यद्यपि? क्या एक या दूसरे के साथ कोई प्रदर्शन समस्या है?उदाहरणों के बीच अंतर क्या है RespondToSelector और Objective-C में चयनकर्ता का जवाब देता है?
उत्तर
हुड के अंतर्गत, -[NSObject respondsToSelector:]
करने की जरूरत है अगर आप [super respondsToSelector:_cmd];
की तरह कुछ करना चाहता हूँ इस तरह कार्यान्वित किया जाता है:
+ (BOOL)instancesRespondToSelector:(SEL)aSelector {
return class_respondsToSelector(self, aSelector);
}
:
- (BOOL)respondsToSelector:(SEL)aSelector {
return class_respondsToSelector([self class], aSelector);
}
और +[Class instancesRespondToSelector:]
इस तरह लागू किया गया है
(मैंने कोरफॉउंडेशन पर Hopper का उपयोग यह पता लगाने के लिए किया था।)
तो, मूल रूप से कोई अंतर नहीं है। हालांकि, आप अपनी खुद की कक्षा में respondsToSelector:
ओवरराइड कर सकते हैं ताकि प्रति वर्ष के आधार पर YES या NO लौटाया जा सके (NSProxy
ऐसा करता है)। आप instancesRespondToSelector:
के साथ ऐसा नहीं कर सकते हैं।
छोटी टिप्पणी, 'उदाहरण रीस्पॉन्डटॉ चयनकर्ता: '** ** ** (** ** ** **, यदि आप संदेश अग्रेषण तंत्र लागू करते हैं) ओवरराइड हो सकते हैं। देखें [उद्देश्य-सी रनटाइम प्रोग्रामिंग गाइड, सेक्शन फॉरवर्डिंग एंड विरासत] (https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html) – Lexandr
@rob_mayoff मुझे पूरी तरह से पता है आप यहां क्या कह रहे हैं, लेकिन केवल एक छोटा सा बिंदु: आपके पहले बयान में [NSObject प्रतिसाद देता है: चयनकर्ता:], लेकिन एनएसओब्जेक्ट स्वयं ही एक वर्ग का नाम है, इसलिए यह थोड़ा सा उलझन में है। आप NSObjectInstance सही मतलब था? – pnizzle
'एनएसओब्जेक्ट प्रतिसाद' चयनकर्ता:] 'लिखना आम है,' एनएसओब्जेक्ट 'वर्ग द्वारा परिभाषित एक उदाहरण संदेश का जिक्र करते हुए (यानी, एक संदेश जिसे' एनएसओब्जेक्ट 'या उसके उप-वर्गों के किसी भी उदाहरण में भेजा जा सकता है)। हम 'NSObject' कक्षा द्वारा परिभाषित एक वर्ग संदेश को संदर्भित करने के लिए '+ [NSObject instancesRespondToSelector:] 'लिखते हैं। –
एक अंतर यह respondsToSelector
आपको बता नहीं सकता एक उदाहरण अपनी सुपर क्लास से एक विधि को विरासत में अगर है, तो यह अभ्यस्त काम करते हैं, आप [[self superclass] instancesRespondToSelector:_cmd];
एचएम के प्रकार में एक फर्क पड़ता है, ठीक है। लेकिन क्या उद्देश्य-सी के उत्तराधिकारी अर्थशास्त्र के कारण यह नहीं है, वास्तव में दो तरीकों के बीच कोई अंतर नहीं है? क्योंकि अगर मैं गलत नहीं हूं, तो आपके उदाहरण से, '[[आत्म सुपरक्लास] प्रतिक्रिया देता है चयनकर्ता: _cmd];' काम करेगा। –
नहीं, क्योंकि क्लास पर कोई विधि नहीं है जिसे प्रतिसाद कहा जाता है: चयनकर्ता:। प्रत्युत्तरsSoSlector एनएसओब्जेक्ट प्रोटोकॉल का हिस्सा है, जो कक्षा – wattson12
@ वाटसन 12 'एनएसओब्जेक्ट' के अनुरूप नहीं है और इसके उप-वर्ग वर्ग विधि '+ प्रतिक्रियाओं का चयन करते हैं: चयनकर्ता: '। –
respondsToSelector:
एक उदाहरण तरीका है और निर्धारित करता है कि एक वस्तु है, जो एक वर्ग या एक वर्ग वस्तु का एक उदाहरण हो सकता है, एक चयनकर्ता प्रतिक्रिया करता है। जब आप एक उदाहरण पास करते हैं तो आप एक आवृत्ति विधि के लिए परीक्षण कर रहे हैं, जब आप कक्षा ऑब्जेक्ट पास करते हैं तो आप क्लास विधि के लिए परीक्षण कर रहे हैं।
instancesRespondToSelector:
वर्ग विधि है और यह निर्धारित करता है कि किसी वर्ग के उदाहरण किसी चयनकर्ता को प्रतिसाद देते हैं या नहीं। यह उस वर्ग के उदाहरण वाले के बिना कक्षा और दिए गए एक उदाहरण विधि के परीक्षण की अनुमति देता है।
- 1. कक्षाओं और ऑब्जेक्ट उदाहरणों के बीच क्या अंतर है?
- 2. अंतर ObjectiveC
- 3. विधि और चयनकर्ता के बीच क्या अंतर है?
- 4. UIScrollView setZoomScale का जवाब नहीं देता है:
- 5. भिन्नता और '-' के बीच क्या अंतर है?
- 6. क्या बीच का अंतर है :: और ::: स्काला
- 7. Matlab गलत जवाब देता है
- 8. रूबी में% Q और% {} के बीच का अंतर क्या है?
- 9. $ ('चयनकर्ता') [0], $ ('चयनकर्ता') के बीच अंतर। Jqery में eq (अनुक्रमणिका)।
- 10. के बीच क्या अंतर है। और # एक सीएसएस फ़ाइल में?
- 11. के बीच क्या अंतर है:। और: आर !?
- 12. # {} $ {} और% {} के बीच क्या अंतर है?
- 13. आरएसपीईसी में stub_model और mock_model के बीच क्या अंतर है?
- 14. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 15. एफ # में नामस्थान और मॉड्यूल के बीच क्या अंतर है?
- 16. $ और $$ के बीच क्या अंतर है?
- 17. "$^एन" और "$ +" के बीच क्या अंतर है?
- 18. एक सीएसएस चयनकर्ता में अंतरिक्ष का मतलब क्या है? यानी .classA.classB और .classA .classB के बीच क्या अंतर है?
- 19. फ़ायरफ़ॉक्स में ओपन() और window.open() के बीच क्या अंतर है?
- 20. जावा में स्ट्रीम और पाठक के बीच क्या अंतर है?
- 21. file_get_contents और fread बीच क्या अंतर है
- 22. .NET में KeyValuePair और हैशटेबल के बीच क्या अंतर है?
- 23. एफ # में IDelegateEvent और IEvent के बीच क्या अंतर है?
- 24. "nonce" और "GUID" के बीच क्या अंतर है?
- 25. के बीच क्या अंतर है?
- 26. जावा में संदर्भ और वस्तुओं के बीच क्या अंतर है?
- 27. सी प्रोग्रामिंग में * और ऑपरेटरों के बीच क्या अंतर है?
- 28. Mustache.render() और Mustache.to_html() के बीच क्या अंतर है?
- 29. self.delegate प्रतिसाद देता है चयनकर्ता: ...
- 30. पायथन सजावट और सजावटी पैटर्न के बीच क्या अंतर है?
प्रतिसाद देता है चयनकर्ता का रिसीवर केवल एक उदाहरण वस्तु हो सकता है। उदाहरणRespondToSelector का रिसीवर केवल क्लास ऑब्जेक्ट हो सकता है। + या - विधि – Karthick