Вопрос

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

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top