कक्षा को उप-वर्ग में, मैं मूल वर्ग के एक प्रतिनिधि को भी उपclass करना चाहता हूं क्योंकि उपclass में अब अतिरिक्त कार्यक्षमता है। ऐसा करने के लिए जाने का सबसे अच्छा तरीका क्या है? अगर मैं सिर्फ एक ही नाम के साथ उपवर्ग में एक और प्रतिनिधि संपत्ति घोषित मैं एक चेतावनी मिलेगा "संपत्ति प्रकार 'आईडी' 'आईडी' 'ParentClass'उद्देश्य-सी में एक प्रतिनिधि संपत्ति को सही ढंग से कैसे विभाजित करें?
उत्तर
NSTableView
और NSOutlineView
के उदाहरण का अनुसरण से विरासत में मिली प्रकार से असंगत है।
NSOutlineView
NSTableView का एक उपवर्ग है, और उसके dataSource
और delegate
के लिए अपने स्वयं के प्रोटोकॉल को परिभाषित करता है
NSTableView
अपने प्रतिनिधि इस तरह की घोषणा:।
- (void)setDelegate:(id <NSTableViewDelegate>)delegate;
- (id <NSTableViewDelegate>)delegate;
और NSOutlineView
:
- (void)setDelegate:(id <NSOutlineViewDelegate>)anObject;
- (id <NSOutlineViewDelegate>)delegate;
जाहिर संकलक नंगे विधि घोषणाओं के साथ अधिक उदार की तुलना में यह संपत्ति घोषणाओं के साथ है।
एनएसटीबल/आउटलाइन व्यू के विपरीत, आप सब क्लास के प्रोटोकॉल को बेस क्लास प्रोटोकॉल से प्राप्त करना चाहते हैं, उदाहरण के लिए
@protocol SpecializedProtocol <BaseProtocol>
... यह शायद स्थिति पर निर्भर करता है।
इस उदाहरण है कि चेतावनी का उत्पादन को देखते हुए:
// Class A
@protocol ClassADelegete;
@interface ClassA : NSObject
@property (nonatomic, weak) id<ClassADelegete> delegate;
@end
@protocol ClassADelegete <NSObject>
- (void)classADidSomethingInteresting:(ClassA *)classA;
@end
// Class B
@protocol ClassBDelegete;
@interface ClassB : ClassA
@property (nonatomic, weak) id<ClassBDelegete> delegate; // Warning here
@end
@protocol ClassBDelegete <ClassADelegete>
- (void)classBDidSomethingElse:(ClassB *)classB;
@end
दो समाधान है कि चेतावनी को निकाल रहे हैं।
1) उपclass में, वर्ग परिभाषा से पहले प्रोटोकॉल परिभाषा रखें।
// Class B
@class ClassB;
@protocol ClassBDelegete <ClassADelegete>
- (void)classBDidSomethingElse:(ClassB *)classB;
@end
@interface ClassB : ClassA
@property (nonatomic, weak) id<ClassBDelegete> delegate;
@end
2) उपवर्ग में, नया एक के साथ मूल प्रोटोकॉल जोड़ें:: यह क्या UITableView.h
में UITableViewDelegate
करता है
// Class B
@protocol ClassBDelegete;
@interface ClassB : ClassA
@property (nonatomic, weak) id<ClassADelegete, ClassBDelegete> delegate;
@end
@protocol ClassBDelegete <ClassADelegete>
- (void)classBDidSomethingElse:(ClassB *)classB;
@end
मुझे लगता है (1) के रूप में एप्पल इस तरह से यह करने के काम करता है, विकल्प (2) चेतावनी को हटा देता है लेकिन मैंने संकलित नहीं किया है और इस तरह से कुछ भी सेटअप चलाया है।
- 1. कैसे सही ढंग से एक ईवेंट हैंडलर
- 2. कैसे सही ढंग से
- 3. रूबी सही ढंग से
- 4. कैसे सही ढंग से एक सीवी :: शून्य()
- 5. जेएसटीएल में तारों को सही तरीके से कैसे विभाजित करें?
- 6. मैं एफ # में एक संपत्ति को सही ढंग से कैसे कार्यान्वित करूं?
- 7. कैसे साफ़ करें: दोनों; सही ढंग से?
- 8. सही ढंग से छोरों
- 9. एक फैंसी वर्टिकल प्रोग्रेसबार सही ढंग से कैसे शैलीबद्ध करें?
- 10. ईएफ 4 कोड पहला - एकाधिक टेबल्स में एक इकाई को विभाजित करने के लिए सही ढंग से मानचित्र कैसे करें
- 11. NSManagedObjectContext सही ढंग से
- 12. सही ढंग से
- 13. सीकेएडिटर उदाहरण को सही ढंग से कैसे नष्ट करें?
- 14. बाध्यकारी StringFormat सही ढंग से
- 15. एक्सएलएसएक्स को सीएसवी में सही ढंग से कनवर्ट करें
- 16. जावा में एक स्ट्रिंग से सफेद जगहों को सही ढंग से कैसे ट्रिम करें?
- 17. सही ढंग से एक datatable (datatable.select)
- 18. GridSplitter सही ढंग से बंटवारे नहीं
- 19. एक संपत्ति सेटर प्रतिनिधि बनाना
- 20. क्लिपबोर्ड से सही ढंग से एन्कोडेड HTML कैसे प्राप्त करें?
- 21. एम्यूलेटर में तेलुगू फ़ॉन्ट को सही ढंग से कैसे दिखाएं
- 22. ज़ेंड फ्रेमवर्क में सत्रों को सही ढंग से कैसे मारें?
- 23. WPF: सही ढंग से एक TreeViewItem
- 24. कैसे कैमल में लाइनों में एक फ़ाइल विभाजित लेकिन पहली पंक्ति को अलग ढंग से
- 25. कैसे सही ढंग से async आपरेशन
- 26. GetHashCode को सही ढंग से कार्यान्वित करना
- 27. कैसे सही ढंग से उबंटू 11.10 oneiric
- 28. निष्पादकों से RuntimeExceptions को सही ढंग से कैसे पकड़ें?
- 29. AdMob विज्ञापनों को सही ढंग से अक्षम करें
- 30. जावास्क्रिप्ट में एक स्लाइडिंग एनीमेशन को सही ढंग से कैसे कार्यान्वित करें?
मैं बाद के मार्ग के साथ गया (मुख्य वर्ग को उपclassing के बाद प्रतिनिधि प्रोटोकॉल subclass), लेकिन संकलक त्रुटि ट्रिगर किए बिना एक और प्रतिनिधि संपत्ति घोषित करने में असमर्थ था। क्या संकुल घोषणाएं आपने संकलक को खुश करने का एकमात्र तरीका बताया है? – Boon
मुझे ऐसा करने के किसी अन्य तरीके से नहीं पता है। –