我想知道在这种类层次结构
的情况下会发生什么MySuperClass : UIViewController
MYSubClass : MySuperClass
MySuperClass缺少方法ViewWillAppear
我的问题是:如果MySubClass有以下方法
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
是简单地忽略了代码(不会被执行),还是会调用UIViewController中的viewWillAppear?
只是想知道。
答案 0 :(得分:3)
它与普通方法调用类似。当你调用super时,运行时会通过超类链上升,直到找到实现所请求方法的那个。如果找不到,则会调用转发方法,如果方法未转发,则会调用doesNotRecognizeSelector:
。所以,是的,将在UIViewController类上调用viewWillAppear
。
答案 1 :(得分:0)
说你有:
MySubClass *mySubController = [[MySubClass alloc] initWithNibNamed:nil bundle:nil];
如果你对mySubController做了一些会导致其视图出现的东西,比如将它推到导航控制器的堆栈上,那么将调用MySubClass的-viewWillAppear实现。就像现在一样,该实现只是调用super的实现。由于MySuperClass不会覆盖-viewWillAppear,因此将调用UIViewController的实现。