0

Say inherited from a class, I can invoke [self someMethod] if someMethod is rewritten; I can also invoke [super someMethod].

What if I use composition instead. Say I have porperty

@propery (nonatomic, strong) XXXController xxController;

Use [self.xxController someMethod] to invoke someMethod, but how to invoke xxController's super version someMethod?

4

2 回答 2

3

不,你不能这样做*。使用组合不允许您破坏封装。

*(实际上可以使用运行时函数来做到这一点,但你真的,真的,真的不应该那样做!)

于 2013-09-03T08:34:26.270 回答
2

你不能那样做。而你不想。不管组合样式与否,一个对象都应该实现它自己的方法,并super在必要时调用它自己的方法。

相反,您应该子类化XXXController以按照您的意愿工作,并super根据需要在该子类中调用。

于 2013-09-03T08:35:50.393 回答