Qualcuno può mostrarmi un esempio di oggetto Cocoa Obj-C, con una notifica personalizzata, come attivarlo, sottoscriverlo e gestirlo?Esempio di notifica personalizzata di cacao
risposta
@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];
Per ulteriori informazioni, consultare la documentazione di NSNotificationCenter.
Qual è il punto di utilizzo della notifica? Perché non chiamare [object handleNotification] direttamente? –
Giunto libero. Nota il commento "// altrove" ... La notifica è una specie di messaggio broadcast. Qualsiasi istanza di oggetto può ascoltare una notifica e non è necessario conformarsi a un particolare protocollo delegato o simile. Possono esserci molte istanze che ascoltano un singolo messaggio. Il mittente non ha bisogno di avere dei riferimenti alle istanze dell'oggetto che desidera informare. –
Fase 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");
}
Fase 2:
//trigger event
[[NSNotificationCenter defaultCenter]
postNotificationName:@"eventType"
object:nil ];
Oh, grazie mille per il grande esempio. Questo è esattamente ciò di cui ho bisogno. – d12frosted
Splendido :) Grazie mille –
Assicurati di annullare la registrazione di notifica (osservatore), quando l'oggetto viene deallocato. La documentazione Apple afferma: "Prima che un oggetto che sta osservando le notifiche sia deallocato, deve comunicare al centro notifiche di interrompere l'invio di notifiche".
per le notifiche locali il codice successivo è applicabile:
[[NSNotificationCenter defaultCenter] removeObserver:self];
E per gli osservatori di notifiche distribuite:
[[NSDistributedNotificationCenter defaultCenter] removeObserver:self];
domanda Vague. Prova a fare una domanda più specifica o cerca nella documentazione di Apple. – danielpunkass
Normalmente non commenterei una domanda come questa, ma visto che hai ricevuto un "con" allora il mio può essere un "pro". Questa domanda consente una * risposta concisa * che tratta rigorosamente l'argomento. Voglio solo scoprire una cosa semplice - non * raschiare * la documentazione di Apple (che con ogni probabilità varrebbe comunque la pena). Quindi grazie per aver fatto questa domanda. Vedo che il tuo +15 atm sulla domanda è congruente con il mio sentimento. – Jacksonkr
+1. Grazie. –