Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. @protocol BaseClassDelegate;
  2.  
  3. @interface BaseClass : NSObject
  4.  
  5. @property (nonatomic, weak) id <BaseClassDelegate> delegate;
  6.  
  7. @end
  8.  
  9. @protocol BaseClassDelegate <NSObject>
  10.  
  11. -(void)baseDelegateMethod;
  12.  
  13. @end
  14.  
  15. protocol SubClassDelegate : BaseClassDelegate {
  16.  
  17. func additionalSubClassDelegateMethod();
  18. }
  19.  
  20. class SubClass: BaseClass {
  21.  
  22. @IBAction func onDoSomething(sender: AnyObject) {
  23.  
  24. delegate?.additionalSubClassDelegateMethod(); <--- No such method in 'delegate'
  25. }
  26. }
  27.  
  28. class SubClass: BaseClass {
  29. var myDelegate: SubClassDelegate? {
  30. get { return delegate as? SubClassDelegate }
  31. set { delegate = newValue }
  32. }
  33. @IBAction func onDoSomething(sender: AnyObject) {
  34. myDelegate?.additionalSubClassDelegateMethod();
  35. }
  36. }
  37.  
  38. (delegate as? SubClassDelegate)?.additionalSubClassDelegateMethod();
  39.  
  40. protocol SubclassDelegate: ClassDelegate {
  41. func subclassDelegateMethod()
  42. }
  43.  
  44. class Subclass: Class {
  45. // here we assume that super.delegate property exists
  46. @IBAction func buttonPressedOrSomeOtherTrigger() {
  47. if let delegate: SubclassDelegate = self.delegate as? SubclassDelegate {
  48. delegate.subclassDelegateMethod()
  49. }
  50. }
  51. }
  52.  
  53. extension SomeOtherClass: SubclassDelegate {
  54. let someObject = Subclass()
  55. someObject.delegate = self
  56.  
  57. func subclassDelegateMethod() {
  58. // yay!
  59. }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement