假设我有一个 UIViewController
@interface CustomController : UIViewController
@end
@implementation CustomController
- (void)myMethod {
//this is the problematic line. It calls viewDidLoad of ExtendedController
//but it should be calling viewDidLoad of CustomController
[self viewDidLoad];
}
- (void)viewDidLoad {
//and this line should call viewDidLoad from UIViewController
[super viewDidLoad];
}
然后我有另一个扩展了那个
@interface ExtendedController : CustomController
@end
@implementation ExtendedController
- (void)viewDidLoad {
[super myMethod];
}
ExtendedController在启动时调用ExtendedController中的viewDidLoad,然后调用CustomController的myMethod,再调用ExtendedController的viewDidLoad,就是死循环。
我怎样才能做到这一点,所以 CustomController 的 myMethod 总是在 CustomController 类中调用 viewDidLoad,而不是任何其他类。
这对我来说没有多大意义,因为例如在 Java 中,这种设置按预期工作。但不知何故,在 iOS 中扩展类时,“自我”的概念就消失了。
public class Hello extends Omg {
public void myMethod() {
//in Java, this method does indeed call "viewDidLoad" in "Hello"
this.viewDidLoad();
}
public viewDidLoad() {
//in Java, this method does indeed call "viewDidLoad" in class "Omg"
super.viewDidLoad();
}
}
public class ExtendedHello {
public void viewDidLoad() {
super.viewDidLoad();
}
}
如何修复我的 iOS 代码以获得预期的行为?
更新:请注意,“viewDidLoad”可以替换为任何方法名称......这个问题与它是 viewDidLoad 的事实无关。
谢谢!