我的 iPhone 应用程序有一个抽象类 WorkingView。它是 UIView 的子类。WorkingView 又会有一堆具体的子类。其中两个将是 SimplifyView 和 MultiplyView。
我正在尝试编写创建 WorkingView 新实例的方法。此方法应传入模式并返回适当的具体子类的实例。根据这个问题的答案,这是我到目前为止所拥有的:
+ (id)newWorkingViewWithFrame:(CGRect)frame mode: (modeEnum) mode {
WorkingView *ret;
switch (mode) {
case simplifyMode:
ret = [[SimplifyView alloc]initWithFrame: frame];
break;
case multiplyMode:
ret = [[MultiplyView alloc]initWithFrame: frame];
break;
// additional cases here
default:
return nil;
}
// more initialization here
return ret;
}
到现在为止还挺好。但问题就在这里。在 SimplifyView 的 init 方法中,我需要通过 UIView 的 init 方法运行对象。调用 [super initWithFrame: frame] 只会让我进入 WorkingView,而不是一直到 UIView。我想我可以在 WorkingView 中创建一个 initWithFrame: 方法,该方法又调用 UIView 的 initWithFrame: 方法——但这感觉很老套。
处理此问题的适当方法是什么?