Sending message to child from parent

后端 未结 3 1632
一生所求
一生所求 2021-01-21 06:02

I have class Child inherited from class Parent. What I want is to send message to child, which has implementation of that message. So it\'s like calling pure virtual function fr

相关标签:
3条回答
  • 2021-01-21 06:16

    Whether the method is present is checked at runtime. Therefore, even if the compiler warns you, the code could still succeed. But always check if self really defines that method first.

    if ([self respondsToSelector:@selector(onCancel)]) {
      [self onCancel];
    }
    

    If you want to eliminate the warning, use -performSelector:.

    if ([self respondsToSelector:@selector(onCancel)]) {
      [self performSelector:@selector(onCancel)];
    }
    
    0 讨论(0)
  • 2021-01-21 06:37

    Inheritence does not remove the need for delegation. Those are mutually exclusive aspects of OOP. It sounds to me as though your are indeed trying to implement a delegator. The classes that it delegates to shouldn't be subclasses of it, but discrete classes. What you need here is composition, not inheritence.

    0 讨论(0)
  • 2021-01-21 06:41

    Unless am the one who's not understanding your problem. If both parent and child implement some onCancel code why not just call [super onCancel] inside the childs onCancel and this will be executed before the child's code is executed.

    0 讨论(0)
提交回复
热议问题