¿Puede alguien mostrarme un ejemplo de un objeto Cocoa Obj-C, con una notificación personalizada, cómo abrirlo, suscribirse y manejarlo?Ejemplo de notificación personalizada de cacao
Respuesta
@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];
Para obtener más información, consulte la documentación de NSNotificationCenter.
¿De qué sirve usar la notificación? ¿Por qué no simplemente llamar a [object handleNotification] directamente? –
Acoplamiento flojo. Observe el comentario "// en otro lugar" ... La notificación es un tipo de mensaje de difusión. Cualquier instancia de objeto puede escuchar una notificación y no necesita ajustarse a ningún protocolo de delegado particular o similar. Puede haber muchas instancias escuchando un solo mensaje. El remitente no necesita tener punteros a la (s) instancia (s) de objeto que desea notificar. –
Paso 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");
}
Paso 2:
//trigger event
[[NSNotificationCenter defaultCenter]
postNotificationName:@"eventType"
object:nil ];
Oh, muchas gracias por un buen ejemplo. Esto es exactamente lo que necesito. – d12frosted
Gorgeous :) Muchas gracias –
Asegúrese de anular el registro de la notificación (observador) cuando se cancela la asignación de su objeto. La documentación de Apple establece: "Antes de desasignar un objeto que está observando notificaciones, debe decirle al centro de notificaciones que deje de enviarle notificaciones".
para las notificaciones locales con el siguiente código es aplicable:
[[NSNotificationCenter defaultCenter] removeObserver:self];
Y para los observadores de las notificaciones distribuidas:
[[NSDistributedNotificationCenter defaultCenter] removeObserver:self];
- 1. Vista de notificación personalizada
- 2. Vista personalizada de cacao para NSMenuItem
- 3. Notificación personalizada: java.lang.RuntimeException: malas longitudes de matriz
- 4. Notificación personalizada con vista remota en Android
- 5. Apple PNS (servicios de notificación de inserción) código de ejemplo
- 6. Cacao - Devolver información de NSOperation
- 7. Ejemplo de compilación personalizada de meteoro ¿menos arranque?
- 8. Atajos globales de cacao?
- 9. Salir de otras aplicaciones en el cacao
- 10. Crear notificación cronometrada (por ejemplo, para eventos) en Android
- 11. Buscando un multi-plataforma, de extremo a extremo ejemplo de C++ para WPF/Cacao interoperabilidad
- 12. Error de cacao 260
- 13. ¿Buenas formas de aprender cacao?
- 14. Recuperar datos de notificación de notificación
- 15. Explicación de cacao uso @selector
- 16. cacao setAnimationDidStopSelector
- 17. Redimensionar ventanas de Cacao proporcionalmente
- 18. Cacao NSTextField espaciamiento de línea
- 19. Aplicación de cacao sin ventanas
- 20. Escribir código de cacao seguro
- 21. ¿Cacao u objetivo C?
- 22. Enviar notificación al centro de notificación Mountain lion
- 23. Color de fondo de notificación predeterminado
- 24. Notificación de cambio de trama UIView
- 25. cacao - conversión de un doble a cadena
- 26. Controle iTunes desde una aplicación de cacao
- 27. Cómo hacer mediante programación de aplicaciones de cacao activa
- 28. El diseño de notificación personalizada no funciona en Android 2.3 o inferior
- 29. Interfaz de cacao con llavero MacOS X
- 30. Error de cacao 256 datos de núcleo
pregunta Vague. Intente hacer una pregunta más específica o busque la documentación de Apple. – danielpunkass
Normalmente, no comentaría sobre una pregunta como esta, pero al ver cómo recibiste una "estafa", la mía puede ser una "pro". Esta pregunta permite una respuesta * concisa * que trata estrictamente del tema. Simplemente quiero encontrar una cosa simple: no la documentación de * scour * apple (que de todos modos valdría la pena). Así que gracias por hacer esta pregunta. Veo tu +15 atm en la pregunta que es congruente con mi opinión. – Jacksonkr
+1 también. Gracias. –