私はこの問題で立ち往生しています。まず、親クラスであるクラス A があります。クラス B はクラス A から継承します。クラス A では、いくつかの通知用にオブザーバーを追加しました。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidBecomeActiveFromBackground) name:UIApplicationDidBecomeActiveNotification object:nil];
メソッド「appDidBecomeActiveFromBackground」に数行のコードを入力します。クラス B では、この処理メソッドを変更したいので、このメソッドをオーバーライドします。しかし実際には、クラス A のメソッドが呼び出されている間、通知が発生するたびに同じ名前のクラス B のメソッドが呼び出されるわけではありません。どうすればこれを解決できますか? クラス B のメソッドでは[super appDidBecomeActiveFromBackground];
、別の実装が必要なので呼び出しません。
編集:以下のコメントから
- (void)appDidBecomeActiveFromBackground {
//-to be define
DEBUGLog(@"did become active");
WFFogSponsorVC *fogSponsorVC = [[[WFFogSponsorVC alloc] init] autorelease];
[self presentModalViewController:fogSponsorVC animated:NO];
}
親クラス(基底クラス)のviewDidLoadメソッドにオブザーバーを登録し、複数のオブザーバーを防ぐためにviewWillDisappearのオブザーバー登録を削除しています。
登録が親クラスに実装されている場合、子クラスのオブザーバー登録を削除する方法も知りたいですか?