Giving notification to another class with NSNotifi

2019-02-18 21:43发布

问题:

So my goal is to deliver a notification to another class with using NSNotificationCenter, I also want to pass object with the notification to the other class, how should I do this?

回答1:

You must first register a notification name

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startLocating:) name:@"ForceUpdateLocation" object:nil]; // don't forget the ":"

And then post a notification with a dictionary of parameters

[[NSNotificationCenter defaultCenter] postNotificationName:@"ForceUpdateLocation" object:self userInfo:[NSDictionary dictionaryWithObject:@"1,2,3,4,5" forKey:@"categories_ids"]]; 

and the method will be

- (void)startLocating:(NSNotification *)notification {

    NSDictionary *dict = [notification userInfo];
}


回答2:

Just call any method for posting notifications as described here, for instance :

to post a notification :

-(void)postNotificationName:(NSString *)notificationName
                     object:(id)notificationSender
                   userInfo:(NSDictionary *)userInfo;

where userInfo is a dictionary containing useful objects.

On the other side to register for notifications :

-(void)addObserver:(id)notificationObserver
           selector:(SEL)notificationSelector
               name:(NSString *)notificationName
             object:(id)notificationSender;

You could also check Apple's Notification Programming Topics.