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
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)];
}
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.
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.