2012-05-05 5 views
0

に呼び出されていない私は、次のような何か:NSNotificationクラスでは、スーパー

- (void)windowDidLoad 
{ 
    [super windowDidLoad]; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(windowWillClose:) 
               name:NSWindowWillCloseNotification 
               object:self.window]; 
} 

- (void)windowWillClose:(NSNotification *)notification { 
    NSLog(@"closing"); 
} 

をそれから私は、このクラスをサブクラス化。唯一の問題があります。このクラスをサブクラス化すると、通知は送信されません。これには理由がありますか?

+0

私はあなたが実際にこのウィンドウコントローラのウィンドウを表示して閉じていると仮定します。 –

+0

それは私がやっていることです。私は、ウィンドウマネージャのウィンドウの配列からそれを削除するために、閉じるイベントをインターセプトしようとしている、ウィンドウの保持されたインスタンスを保持するウィンドウマネージャを作成しました。 – Yep

+0

質問を編集してそのコードを表示してください。問題のコードは現状のまま正常に動作するはずです。 –

答えて

2

サブクラスがwindowDidLoadおよび/またはwindowWillClose:を上書きしますか?その場合、サブクラスの実装はsuperとなりますか?

+0

いいえ、私はそれらの方法をオーバーライドしません。実装は空です。 – Yep

+1

問題は、私がウィンドウ**コントローラ**を保持していないということでした。私はウィンドウを保持していました。間接的に私がそれを見つけるのを助けてくれてありがとう – Yep

1

あなたが何かを見逃すことが、あなたはすでにあなたのサブクラスでこれらのメソッドをオーバーライドしました

  1. を確認してください?

    - (void)windowDidLoad

    - (void)windowWillClose:(NSNotification *)notification

  2. あなたが1でなかった場合は、このようなコードを書きましたか?

    [super windowDidLoad];または[super windowWillClose:param];

+0

いいえ、私はそれらの方法をオーバーライドしません。実装は空です。 – Yep

0

1)windowDidLoadまたはawakeFromNib

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(windowWillClose:) name:NSWindowWillCloseNotification object:self.window]; 

2で線の下に追加)ウィンドウを選択し、検査属性に移動して、そして "閉じたときの解除" チェックをチェックボックス。

関連する問題