में उद्देश्य सी और जादू विधियों क्या उद्देश्य-सी क्लास विधि में कॉल को अवरुद्ध करने का एक तरीका प्रदान करता है जो मौजूद नहीं है?कक्षा
कक्षा
उत्तर
हाँ, आप resolveClassMethod साथ कर सकते हैं: वर्ग विधि (जो NSObject पर परिभाषित किया गया है): http://iphonedevelopment.blogspot.com/2008/08/dynamically-adding-class-objects.html
:यहाँ भी के लिए बाहर देखने के लिए कुछ न कुछ है (मुझे पहली बार स्टम्प्ड)
forwardInvocation
विधि वह है जिसे आप उपयोग करना चाहते हैं। जब किसी ऑब्जेक्ट पर एक गैर-मौजूदा चयनकर्ता कहा जाता है तो इसे स्वचालित रूप से कहा जाता है। इस विधि का डिफ़ॉल्ट व्यवहार doesNotRecognizeSelector:
(जो आपके कंसोल पर डीबग जानकारी आउटपुट करता है) को कॉल करना है, लेकिन आप इसे जो कुछ भी चाहते हैं उसे ओवरराइड कर सकते हैं। ऐप्पल द्वारा एक अनुशंसित दृष्टिकोण यह तरीका है कि इस विधि को किसी अन्य ऑब्जेक्ट पर विधि आमंत्रण अग्रेषित करें।
- (void)forwardInvocation:(NSInvocation *)anInvocation
ध्यान दें कि forwardInvocation
एक काफी महंगा ऑपरेशन है। एक एनएसआईएनवोकेशन ऑब्जेक्ट को ढांचे द्वारा बनाया जाना चाहिए और (वैकल्पिक रूप से) किसी अन्य उदाहरण पर चयनकर्ता को आमंत्रित करने के लिए उपयोग किया जाता है। यदि आप गैर-मौजूदा चयनकर्ताओं का पता लगाने की अपेक्षाकृत (अपेक्षाकृत) तेज विधि की तलाश में हैं तो आप इसके बजाय forwardingTargetForSelector
लागू करना चुन सकते हैं।
- (id)forwardingTargetForSelector:(SEL)aSelector
आप कैसे इन तरीकों को प्रभावी ढंग से ओवरराइड करने के लिए के लिए Apple's documentation चाहिए, वहाँ कुछ पकड़ लिया, के लिए बाहर देखने के लिए विशेष रूप से जब एक ही वस्तु लापता चयनकर्ताओं होगा पर forwardInvocation
विधि अधिभावी के हैं।
- 1. कक्षा सूची के लिए कक्षा संरचना कक्षा?
- 2. कक्षा कक्षा - उदाहरण बनाम कक्षा के तरीके
- 3. कक्षा बी को कक्षा
- 4. कक्षा ए कक्षा ए
- 5. कक्षा
- 6. कक्षा
- 7. कक्षा
- 8. कक्षा
- 9. कक्षा
- 10. कक्षा
- 11. कक्षा
- 12. कक्षा
- 13. कक्षा
- 14. कक्षा
- 15. कक्षा
- 16. कक्षा
- 17. कक्षा
- 18. कक्षा
- 19. कक्षा
- 20. कक्षा
- 21. कक्षा
- 22. कक्षा
- 23. कक्षा
- 24. कक्षा
- 25. कक्षा
- 26. कक्षा
- 27. कक्षा
- 28. कक्षा
- 29. कक्षा
- 30. कक्षा
क्लास विधि अग्रेषण तंत्र के लिए क्लास विधियों की आवश्यकता होती है, उदाहरण के तरीकों से नहीं। '+ (शून्य) forwardingTargetForSelector: (SEL) sel;' ' + (शून्य) forwardInvocation: (NSInvocation *) anInvocation;' बाद में समारोह एक सहायक समारोह का उपयोग करता है: '+ (NSMethodSignature *) methodSignatureForSelector: (SEL) sel; ' – dmitri