मैं एक ObjC आधार वर्ग है से एक प्रतिनिधि का विस्तार:एक आधार वर्ग
@protocol BaseClassDelegate;
@interface BaseClass : NSObject
@property (nonatomic, weak) id <BaseClassDelegate> delegate;
@end
@protocol BaseClassDelegate <NSObject>
-(void)baseDelegateMethod;
@end
मैं एक तेज उप-वर्ग, जिसमें मैं अपने प्रतिनिधि का विस्तार करना चाहते बनाने रहा हूँ ...
protocol SubClassDelegate : BaseClassDelegate {
func additionalSubClassDelegateMethod();
}
class SubClass: BaseClass {
@IBAction func onDoSomething(sender: AnyObject) {
delegate?.additionalSubClassDelegateMethod(); <--- No such method in 'delegate'
}
}
अब, जब मैं अपना उप-वर्ग बनाता हूं, तो मैं कह सकता हूं कि यह सब क्लासडिलेगेट के अनुरूप है और प्रतिनिधि को सेट करता है। समस्या (ज़ाहिर है), यह है कि इस उप-वर्ग में 'प्रतिनिधि' मौजूद नहीं है। क्या मेरे प्रतिनिधि को मेरे उप-वर्ग में 'विस्तारित' करने के लिए संकलक को बताने का कोई तरीका है? (या मैं यहां पागल हो रहा हूं और कुछ स्पष्ट याद कर रहा हूं)
धन्यवाद। दूसरा विकल्प काम करता था हालांकि पहला विकल्प अधिक प्रतिनिधि दिखता था लेकिन संकलित त्रुटियों को उत्पन्न करता था w.r.t. संपत्ति और प्रकार को ओवरराइड करना। – Fittoburst
हां, क्षमा करें, आप संपत्ति को ओवरराइड नहीं कर सकते हैं ताकि इसे मूल वर्ग के लिए अधिक विशिष्ट बनाया जा सके। मैंने पहला नमूना अपडेट किया है। – redent84