5

静的なNSNotificationオブザーバ(以下のコードのような)を持つことは可能でしょうか?私はいくつかの問題を抱えています、そして、私はそれが私のシングルトンのクラス構造のせいかもしれないと思います。NSNotificationオブザーバーとしてのクラス?

通知を受信するクラスインスタンスが常にあるとは限りませんが、このクラスの静的プロパティはアプリケーションのライフサイクルに影響します。

- (id)init { 
    [super init] 

    [[NSNotificationCenter defaultCenter] addObserver:[self class] 
              selector:@selector(action:aNotification:) 
               name:@"NSSomeNotification" 
               object:nil]; 
    return self; 
} 

+ (void)action:(NSNotification *)aNotification { 
    NSLog(@"Performing action"); 
} 

答えて

9

最初の問題は、@selector(action:)する必要がありますあなたのセレクタ—かもしれません。

また、通知をinitに登録してもよろしいですか(別の問題の可能性があります[super init]への呼び出しがありません)。つまり、クラスのインスタンスを作成するたびに通知が(再)登録されます。クラスメソッドの代わりに真のシングルトンオブジェクトを実装することを検討するかもしれません。

+0

セレクター、ありがとうございました。私は '[super init]'(私は私の全機能を投稿しなかった)を呼んでいたことを反映するために投稿を編集しました。また、私はそれが何か問題ではないので、それが複数回呼び出されていないことを確認するチェックがあります。 Objective-Cで「真のシングルトン」を作る方法を示すリンクがありますか? – Dov

+0

[ウィキペディアのエントリ](http://en.wikipedia.org/wiki/Singleton_pattern#Objective-C)は、2つの主要なテクニックの良い例です。私はしばしば非厳密な実装を使用します。この質問と回答もご覧ください:http://stackoverflow.com/questions/145154/what-does-your-objective-c-singleton-looklike – bosmacs

関連する問題