另一种表达这个问题的方法是:子类是否可能成为其超类的委托?我正在尝试使我的代码在我的应用程序中可重用,并且具有子类需要实现两个方法才能实现的情况.我怎样才能确保这种情况发生?或者,定义这些方法的正确方法是什么?
更新
我并不是故意暗示我希望编译器生成标志.我只想要一种干净的方式来组织我的代码.目前我重写了超类的方法.使用这种方法,超类可以调用[super methodToOverride]并且它可以工作.然而,这对我来说并不是很干净,因为除了在某处发表评论之外,没有办法指定"这些是你应该覆盖的方法".
在obj-c中,不可能强制子类覆盖其超类的方法.但是你可以在超类中引发异常,因为子类没有实现某种方法.但是子类可以是其超类的委托,如果超类不实现某些方法,并且您可以强制委托实现这些方法,如果超类指定协议,即必需的方法,并且子类采用它.
如果要强制子类实现超类的方法,则可以执行以下操作:
//In super class
- (id)someMethod:(SomeObject*)bla
{
[self doesNotRecognizeSelector:_cmd];
return nil;
}
Run Code Online (Sandbox Code Playgroud)
如果子类无法实现此方法,则您的应用将崩溃,而您无需调用
[super someMethod:bla];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6977 次 |
| 最近记录: |