Pregunta

Actualmente tengo un pozo de color, que mantiene un registro de un color que es salvado en los NSUserDefaults. Se une a un NSUserDefaultsController. Sin embargo, también quiero escuchar los cambios en el color para que pueda actualizar mis puntos de vista en consecuencia. Por lo tanto, además de la unión, añadí un objetivo / acción para el contenedor de color a mi controlador de preferencias que publica una notificación con el color.

1) ¿Qué tan seguro está teniendo tanto objetivo / acción y los enlaces? ¿Existe la posibilidad de que uno podría lag o pueden estar fuera de sincronía y registra valores distintos?

2) Cuando estoy consiguiendo el color en mi método IBAction, debería obtener de los valores predeterminados del usuario o desde la paleta de colores?

Aquí está mi colorChanged: Acción:

- (IBAction)colorChanged:(id)sender
{
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[colorWell color] forKey:@"color"];
[notificationCenter postNotificationName:@"ColorChangedNotification" object:self userInfo:userInfo];
}

Así que debería estar haciendo esto:

[NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"color"]];

o

[colorWell color];

Gracias!

¿Fue útil?

Solución

  

1) ¿Qué tan seguro es que tiene tanto   objetivo / acción y los enlaces? Hay un   posibilidad de que uno podría retrasarse o   puede estar fuera de sincronización y el informe   valores diferentes?

Creo que en su mayor parte, debería estar bien. La mejor manera de saberlo es probarlo.

  

2) Cuando estoy consiguiendo el color en mi método IBAction, debería obtener de los valores predeterminados del usuario o desde la paleta de colores?

Debe duda, sin duda obtenerlo directamente de la paleta de colores. ¿Por qué? No puede haber un retraso al guardar los valores predeterminados del usuario. Heck, los valores por defecto podrían incluso ahorrar una vez justo antes de la aplicación termina, y aún así sería bien. (OK, esto no es del todo cierto, pero aún así) objetivo principal Los valores por defecto es persistir en el medio de datos se inicia la aplicación, no durante la vida útil de la aplicación.

Otros consejos

Es seguro tener tanto objetivo / acción y enlaces. Si publica notificaciones con un NSNotificationCenter, a continuación, las notificaciones se entregan de forma sincrónica a los observadores. (Con la salvedad evidente que no es mágica - si el observador A envía un mensaje al observador B cuando se hace la notificación, el observador B no habrá recibido la notificación aún múltiples hilos añaden más complejidad..) Esto se llama en < a href = "http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html" rel = "nofollow noreferrer"> la documentación para NSNotificationCenter.

Lectura el color directamente desde el pozo de color es rápido, y probablemente muy bien desde un IBAction. Si está ejecutando código cuando se inicia la aplicación que lo mejor es leer a partir de los valores predeterminados del usuario debido a las consolidaciones del pozo color no se hayan actualizado todavía.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top