1

これが私の状況です。サブクラス B は UIViewController から継承されます。サブクラス B では、スーパー (サブクラス A) の viewWillAppear: の実装を呼び出すことを避けていますが、正常に動作しても正しくないと思います。

UIViewController の実装を呼び出す正しい方法は何ですか?

4

1 に答える 1

1

深いクラス階層は、特にUIViewController. 可能な限りそれらを避けてください。

1 つのアプローチは、スーパークラスによって提供される機能をバイパスするメカニズムを提供することです。例えば:

@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 に答える