Por ejemplo, cuando la memoria baja, el sistema envía una notificación UIApplicationDidReceiveMemoryWarningNotification
. Eso es todo lo que dice Apple en sus documentos en ese momento. Pero, ¿de dónde viene esta notificación y a qué método se envía? ¿O dónde y cómo registro lo que me notifican?¿Dónde y cómo registro un objeto para recibir una Notificación?
Respuesta
Se envía al centro de notificaciones, donde todas las notificaciones están centralizadas. Un objeto que desea recibir información sobre esta notificación se registra en el centro de notificaciones al indicar a qué notificación desea que se informe y qué método debe invocarse cuando se envía la notificación.
Para obtener más información, puede echar un vistazo a Notification programming topics for Cocoa y NSNotification class reference.
Desde dentro del código de inicialización de la clase en la que desea recibir la notificación que el método siguiente llamada:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleMemoryWarning:) name: UIApplicationDidReceiveMemoryWarningNotification object:nil];
Esto supone que su clase también implementa un método handleMemoryWarning de la siguiente manera:
- (void) handleMemoryWarning:(NSNotification *)notification
{
}
Mucho más simple de usar la aplicación delegar e implementar el método opcional
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
Las notificaciones más comunes también están disponibles traducidas en llamadas a un delegado, generalmente a métodos opcionales en un protocolo formal. Su delegado puede ser el objeto que desee.
Observe cómo obtiene el nombre del delegado tomando el nombre de la notificación y eliminando 'UI' desde el principio,' Notificación' desde el final y reduciendo la primera letra. – Abizern
Tenga en cuenta que su selector tendrá que tomar la notificación como argumento.
Si utilizas algo como @selector (handleMemoryWarning) y - (void) handleMemoryWarning {} el objeto NO enviará la notificación y aún mantendrás toda la memoria.
Me acabo de morder.
Totalmente falso (y yo también lo probé) Puede usar el selector sin params o con params. También use "hardware -> simular advertencia de memoria" en el simulador de iOS. –
¿De verdad? ¿Lo has probado en todos los dispositivos y versiones del sistema operativo? Fui testigo de esto sucediendo de primera mano en mi código cuando las pruebas. –
Hola Ben, no dudo que lo hayas visto en algún dispositivo y versión del sistema operativo. Dicho esto, NUNCA he visto a 'performSelector' preocuparse por un param o no. ¿Alguna idea de qué dispositivo y versión del sistema operativo era? –
- 1. ¿Cómo publicar y recibir una notificación?
- 2. ¿Cómo me registro para recibir una notificación y luego el volumen del sonido cambia?
- 3. Cómo recibir una notificación cuando se notifica una notificación
- 4. ¿Cómo recibir una notificación de luz LED?
- 5. ¿Puedo recibir una notificación cuando comience un nuevo día?
- 6. Cómo recibir una notificación cuando NSWindow se cierra
- 7. Apple Push Notificación de registro y token de dispositivo ¿Recibir aclaración?
- 8. Recibir notificación de eliminación/destrucción de objetos
- 9. Cómo puedo recibir una notificación si una columna DataGrid está ordenada (y no ordenada)
- 10. Recibir notificación sobre una terminación de proceso Java
- 11. ¿Cómo recibir una notificación cuando un usuario cambia la contraseña o solicita un restablecimiento de contraseña?
- 12. Recibir una notificación cuando se selecciona la pestaña actual nuevamente
- 13. Objetivo C: recibir una notificación cuando se llame a un método
- 14. ¿Dónde debo eliminar un observador de notificación?
- 15. cómo recibir una notificación para cambios en la dirección IP automáticamente
- 16. ¿Cómo puedo recibir una notificación cuando se completa una tarea dispatch_async?
- 17. ¿Cómo recibir una notificación cuando el estado de SMS cambia de 'En cola' a 'Enviado'?
- 18. Recibir notificación cuando se cambió el valor de RegistryKey
- 19. Wpf - Recibir notificación de cambio de valor de propiedad para propiedades de un elemento de estructura
- 20. ¿Cómo puedo recibir una notificación cuando se crea una nueva ventana en Win32?
- 21. Cómo recibir un objeto JSON con el estante
- 22. ¿Se puede recibir una notificación cuando un UITableView termine de desplazarse?
- 23. Usando sockets para enviar y recibir datos
- 24. Enviar y recibir el objeto de serialización en UDP
- 25. Dónde y cómo Castle Windsor establece la instalación de registro
- 26. Rubí objeto # advertencias Identificación y Registro Activo
- 27. ¿Cómo liberar un objeto que está en un registro?
- 28. ¿Cómo habilito el registro FFMPEG y dónde puedo encontrar el archivo de registro FFMPEG?
- 29. ¿Hay alguna manera de recibir una notificación cuando cambie mi propiedad UIImageView.image?
- 30. ¿Cómo recibir notificaciones cuando una ventana se enfoca en WPF?
No olvides llamar a removeObserver en el trato de esa clase. – Abizern
No se puede editar. Selector debe ser @selector (handleMemoryWarning :) – DougW
Olvidé usar la etiqueta de código inicialmente - Solucionado. – m4rkk