5

静的な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" );
}
4

1 に答える 1

9

最初の問題はセレクターである可能性があります—それはであるはずです@selector(action:)

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

于 2010-12-08T02:14:22.637 に答える