Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @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'
- }
- }
- class SubClass: BaseClass {
- var myDelegate: SubClassDelegate? {
- get { return delegate as? SubClassDelegate }
- set { delegate = newValue }
- }
- @IBAction func onDoSomething(sender: AnyObject) {
- myDelegate?.additionalSubClassDelegateMethod();
- }
- }
- (delegate as? SubClassDelegate)?.additionalSubClassDelegateMethod();
- protocol SubclassDelegate: ClassDelegate {
- func subclassDelegateMethod()
- }
- class Subclass: Class {
- // here we assume that super.delegate property exists
- @IBAction func buttonPressedOrSomeOtherTrigger() {
- if let delegate: SubclassDelegate = self.delegate as? SubclassDelegate {
- delegate.subclassDelegateMethod()
- }
- }
- }
- extension SomeOtherClass: SubclassDelegate {
- let someObject = Subclass()
- someObject.delegate = self
- func subclassDelegateMethod() {
- // yay!
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement