68 votes

Exemple de notification personnalisée de cacao

Quelqu'un peut-il me montrer un exemple d'objet Cocoa Obj-C, avec une notification personnalisée, comment le déclencher, s'y abonner et le gérer?

81voto

Jason Coco Points 52303
 @implementation MyObject

// Posts a MyNotification message whenever called
- (void)notify {
  [[NSNotificationCenter defaultCenter] postNotificationName:@"MyNotification" object:self];
}

// Prints a message whenever a MyNotification is received
- (void)handleNotification:(NSNotification*)note {
  NSLog(@"Got notified: %@", note);
}

@end

// somewhere else
MyObject *object = [[MyObject alloc] init];
// receive MyNotification events from any object
[[NSNotificationCenter defaultCenter] addObserver:object selector:@selector(handleNotification:) name:@"MyNotification" object:nil];
// create a notification
[object notify];
 

Pour plus d'informations, consultez la documentation de NSNotificationCenter .

45voto

mracoker Points 746

Étape 1:

 //register to listen for event    
[[NSNotificationCenter defaultCenter]
  addObserver:self
  selector:@selector(eventHandler:)
  name:@"eventType"
  object:nil ];

//event handler when event occurs
-(void)eventHandler: (NSNotification *) notification
{
    NSLog(@"event triggered");
}
 

Étape 2:

 //trigger event
[[NSNotificationCenter defaultCenter]
    postNotificationName:@"eventType"
    object:nil ];
 

5voto

Grigori A. Points 705

Assurez-vous de désenregistrer la notification (observateur) lorsque votre objet est désalloué. La documentation Apple indique: "Avant qu'un objet observant des notifications ne soit désalloué, il doit dire au centre de notification d'arrêter de lui envoyer des notifications".

Pour les notifications locales, le code suivant est applicable:

 [[NSNotificationCenter defaultCenter] removeObserver:self];
 

Et pour les observateurs des notifications distribuées:

 [[NSDistributedNotificationCenter defaultCenter] removeObserver:self];
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X