2011-11-27 8 views
5

मैं जानना चाहता हूं कि सुपरक्लास मेरे उप-वर्ग से विधि ए लागू करता है, जो विधि ए को भी लागू करता है, ताकि मैं अपवाद प्राप्त किए बिना अपने उप-वर्ग से [सुपर ए] सुरक्षित रूप से कॉल कर सकूं।मैं कैसे पता लगा सकता हूं कि सुपरक्लास भी उसी उप-विधि को लागू करता है जो मेरा सबक्लास लागू करता है?

एनएसओब्जेक्ट का जवाब करने के लिए चयनकर्ता: इस मामले में काम नहीं करता है, क्योंकि यह हमेशा सच हो जाएगा (क्योंकि मेरा सबक्लास प्रश्न में विधि लागू करता है)। कोई विचार?

उत्तर

12

ऐसा करने के लिए आप कक्षा विधि instancesRespondToSelector: का उपयोग कर सकते हैं। तो सबक्लास से आप यह निर्धारित करने के लिए [[self superclass] instancesRespondToSelector:@selector(...)] पर कॉल कर सकते हैं कि सुपरक्लास आपके द्वारा आवश्यक विधि को लागू करता है या नहीं।

+0

कक्षा विधियों के बराबर क्या है? कहें, मैं परीक्षण करना चाहता हूं कि क्लास लेवल चयनकर्ता सुपर क्लास में या सबक्लास में है या नहीं? – jAckOdE

0

[[[आत्म वर्ग] सुपर क्लास] instancesRespondToSelector: (।) @selector] का प्रयास करें]]

[सुपर respondsToSelector:] respondsToSelector की सुपर क्लास के कार्यान्वयन, जो की संभावना वर्तमान वर्ग के रूप में ही है invokes। यह जांचता है कि सुपरक्लास विधि को लागू करता है या नहीं।

2

कॉलिंग [[self superclass] instancesRespondToSelector:@selector(...)] कॉल नहीं करेगा, अगर यह वर्ग लागू होता है तो उप-वर्गीकृत वर्ग के उदाहरण पर विधि को बुलाया जाता है। एक समाधान स्पष्ट रूप से वर्तमान वर्ग के नाम को टाइप करना है जो इसे कार्यान्वित करता है:

[[ExplicitClassName superclass] instancesRespondToSelector:@selector(...)] 
संबंधित मुद्दे

 संबंधित मुद्दे