Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Class as NSNotification observer?

Should it be possible to have a static NSNotification observer (like the code below)? I'm having some problems, and I think it may be due to my singleton class structure.

I don't always have a class instance around to listen to the notifications, but the static properties of this class stick around for my application's lifecycle.

- (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" );
}
like image 292
Dov Avatar asked Dec 08 '10 01:12

Dov


1 Answers

The first problem may be your selector — that should be @selector(action:).

Also, are you sure you want to register the notification in init (which is missing any call to [super init], which may be another problem)? That means your notification will be (re)registered every time you create an instance of the class. You might consider implementing a true singleton object instead of class methods.

like image 175
bosmacs Avatar answered Oct 06 '22 00:10

bosmacs