You can, of course, accomplish this with the help of the parent class. If your foo
calls [super foo]
and your superclass then in turn calls [super foo]
because it expects this behavior, then you're all set. This is a common pattern (e.g. -init
and -dealloc
).
But you can't jump directly using normal Obj-C syntax. Every subclass defines its own set of semantics for a class around its state and methods. If you could arbitrarily call implementations anywhere up your inheritance chain without the intermediate implementations knowing anything about it, then no implementation would have any guarantees about the integrity of its own state, and it would break the abstractions around classes.
In other words, and I hate being the guy that says this, you should rethink your design if this seems to be what you really want to do. (If so, feel free to open a new question to discuss the design of your object model. People here will be happy to assist.)
That said, technically, I suspect you can accomplish this by dealing directly with the Obj-C runtime. You can get your object's class reference, then its superclass, then its superclass, and get the method implementation you want from it. Then call it with your object. Code for this is an exercise for the reader. :) Here are the docs.