1

这是我的情况:子类 B 继承自子类 A 继承自 UIViewController。在子类 B 中,我避免调用 viewWillAppear: 的超级(子类 A)实现,但我认为它不正确,即使它工作正常。

仍然调用 UIViewController 的实现的正确方法是什么?

4

1 回答 1

1

深层次的层次结构经常会变得混乱,尤其是UIViewController. 尽可能避免它们。

一种方法是提供一种机制来绕过超类提供的功能。例如:

@interface MagicalViewController : UIViewController
-(BOOL)shouldDoMagicOnViewWillAppear;
@end


@implementation MagicalViewController

-(void)viewWillAppear:(BOOL)animated {
   [super viewWillAppear:animated];

   if ([self shouldDoMagicOnViewWillAppear]) {
      //do magic
   }
}


-(BOOL)shouldDoMagicOnViewWillAppear {
    return YES;
}


@end



@interface NotSoMagicalViewController : MagicalViewController
@end

@implementation NotSoMagicalViewController

-(BOOL)shouldDoMagicOnViewWillAppear {
    return NO;
}

@end
于 2012-09-18T12:08:15.630 回答