जवाबों:
स्थिर संदेश इंस्टेंस भी है। RespondToSelector: (SEL) चयनकर्ता आप इसे इस तरह कहेंगे:
[MyClass instancesRespondToSelector:@selector(someMethod:withParams:)]
या इस तरह:
[[myObject class] instancesRespondToSelector:@selector(someMethod:withParams:)]
यह उपयोगी हो सकता है यदि आप एक निर्माता या किसी अन्य को इस पर निर्भर करना चाहते हैं (मेरा मतलब है, उदाहरण के पहले ही)।
का उपयोग करें respondsToSelector:। से प्रलेखन :
respondsToSelector:
एक बूलियन मान लौटाता है जो इंगित करता है कि क्या रिसीवर लागू करता है या एक विधि विरासत में मिलती है जो एक निर्दिष्ट संदेश का जवाब दे सकती है।
- (BOOL)respondsToSelector:(SEL)aSelectorपैरामीटर
aSelector - एक चयनकर्ता जो एक संदेश की पहचान करता है।वापसी मान
YESयदि रिसीवर लागू करता है या एक विधि विरासत में मिलती है जो कि एसेलर का जवाब दे सकती है , अन्यथाNO।
आप देख रहे हैं respondsToSelector: -
if ([foo respondsToSelector: @selector(bar)] {
[foo bar];
}
जैसा कि डोनल कहते हैं कि ऊपर आपको बताता है कि फू चयनकर्ता को बार चयनकर्ता निश्चित रूप से संभाल सकता है । हालांकि, अगर फू एक छद्म है जो कुछ अंतर्निहित वस्तु को बार की तरफ बार करता है जो बार संदेश प्राप्त करेगा, तो उत्तर देता है :Selector: आपको NO बताएगा, भले ही संदेश उस वस्तु को अग्रेषित किया जाएगा जो बार का जवाब देती है।
RespondsToSelector के साथ चयनकर्ताओं की जाँच आम तौर पर केवल प्रतिनिधि विधियों के लिए है। आपको प्रतिनिधि विधियों के लिए अग्रेषण या प्रॉक्सी का उपयोग नहीं करना चाहिए। यदि आपको अन्य स्थितियों में respondsToSelector का उपयोग करने की आवश्यकता है, तो आप यह सुनिश्चित कर सकते हैं कि इस प्रोग्राम को डिज़ाइन करने के लिए अधिक उपयुक्त तरीका नहीं है।
- forwardInvocation:) घोषित नहीं किया है ।