2009-03-15 16 views
1

の下に通知を送信しない:awakeFromNibNSWorkspace通知センター私はここで何か間違ったことをやっている場合、私はわからないガベージコレクション

に、私はこのスニペットを使用したワークスペースの通知のために登録してい

[[[NSWorkspace sharedWorkspace] notificationCenter] 
    addObserver:self 
     selector:@selector(noteReceived:) 
      name:nil 
     object:nil]; 

セレクタnoteReceived:は、パラメータとして単一のNSNotification *を取ります。そして、私はそれにブレークポイントを持っています。

GCをオフにしてコンパイルすると正常に動作し、すべての通知が届きます。

GCをオンにすると、アプリが起動したときに通知が1回だけ表示されます。それだけです。

何か不足していますか?

ソリューション:

私は何かが欠けていました。これは簡単なテストプロジェクトだったので、実際のアプリケーションに存在するコントローラ間の通常の接続はありませんでした。 nib/xibファイル内のオブジェクトをインスタンス化し、収集されないことを期待するだけでは不十分です。

私のコントローラは、オブジェクトを有効に保つのに十分なFile所有者の代理人(デリゲートメソッドを実装していないにもかかわらず)にしたことがあります。

答えて

2

GCの下では、NSNotificationCenterはあなたの観測オブジェクトに弱い参照しか保持しません。そのため、オブジェクト階層のどこかにオブジェクトがあることを確認してください。

+0

ありがとう、私は解決策を見つけるのを助けた。 – Abizern

関連する問題