【发布时间】:2011-08-04 15:36:52
【问题描述】:
如何防止方法在子类中被覆盖,从而错过对其超类实现的调用?
我知道致电[super methodName]; 有时会解决我的问题。
但是如果其他人使用我的父类并覆盖了我的方法,不小心错过了调用 super,我该怎么办?
更多解释:
我创建了一个视图控制器 VC1,它有一个方法 -(void)indexDidChange:(int)index { }。我在那里写了一些我每次都需要执行的操作。我将这个名为 SVC1 的视图控制器子类化,我需要 -(void)indexDidChange:(int)index { } 来执行一些其他操作,但同时还需要执行 VC1 -(void)indexDidChange:(int)index { } 操作。所以我需要打电话,
-(void)indexDidChange:(int)index {
[super indexDidChange:index];
}
所以我决定改变 VC1 的功能,比如,
-(void)indexDidChange:(int)index {
[self currentIndexDidChange:(int)index];
}
-(void)currentIndexDidChange:(int)index { }
我需要 -(void)currentIndexDidChange:(int)index { } 覆盖并防止 -(void)indexDidChange:(int)index { } 覆盖。
有可能吗?
【问题讨论】:
-
您的问题不清楚。您似乎将 私有方法 与 final 方法 的概念混为一谈。您是要防止调用类的子类中的方法,还是要防止覆盖类的子类中的方法?这是完全不同的两件事。
-
@Regexident,现在清楚了吗?有希望吗?谢谢回复....
-
好的,谢谢。因此,显然与您原来的措辞相反,您根本没有寻找最终方法。我相应地更新了我的答案。
标签: objective-c methods overriding