Класс как NSNotification наблюдатель? - PullRequest
5 голосов
/ 08 декабря 2010

Должно ли быть возможно иметь статического наблюдателя 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" );
}

1 Ответ

9 голосов
/ 08 декабря 2010

Первой проблемой может быть ваш селектор & mdash; это должно быть @selector(action:).

Кроме того, вы уверены, что хотите зарегистрировать уведомление в init (при котором отсутствует звонок на [super init], что может быть другой проблемой)? Это означает, что ваше уведомление будет (пере) регистрироваться каждый раз, когда вы создаете экземпляр класса. Вы могли бы рассмотреть реализацию настоящего одноэлементного объекта вместо методов класса.

...