iphone - tutorial - NSUserDefaults synchronize-method
ios (3)
El propósito de [default synchronize];
es hacer que los valores predeterminados del usuario se escriban en el disco de inmediato . No necesita llamarlo explícitamente, iOS ya lo hace en los momentos apropiados. Entonces puedes eliminar esa línea. De hecho, es un problema de rendimiento si llama a synchronize
cada vez que establece un valor predeterminado.
Antes de iOS 7, los valores predeterminados del usuario siempre se sincronizaban cuando la aplicación pasaba a segundo plano. A partir de iOS 7, ya no es el caso, por lo que es posible que desee llamar a synchronize
en applicationDidEnterBackground:
su delegado de applicationDidEnterBackground:
o registrarse en la notificación UIApplicationDidEnterBackgroundNotification
para hacerlo.
De la documentación para -[NSUserDefaults synchronize]
:
Debido a que este método se invoca automáticamente a intervalos periódicos, utilice este método solo si no puede esperar la sincronización automática (por ejemplo, si su aplicación está a punto de salir) o si desea actualizar el usuario de forma predeterminada a lo que está en el disco aunque no has hecho ningún cambio
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"xxxxxxxx" forKey:@"name"];
[defaults synchronize];
Necesito saber por qué tengo que usar la última línea del código anterior [defaults synchronize]
? ¿Cuál es el propósito de usarlo? ¿Es obligatorio?
Sí, con esa línea le está diciendo a su sistema que cargue NSUserDefaults con sus nuevos valores predeterminados.
Puede encontrar toda la información aquí:
Ya no tienes que escribir esa línea.
El método de referencia de la documentation actualizada
Espera cualquier actualización asíncrona pendiente a la base de datos predeterminada y devuelve; este método es innecesario y no debe usarse.
Comentarios al método explicando qué hacer.
/*!
-synchronize is deprecated and will be marked with the NS_DEPRECATED macro in a future release.
-synchronize blocks the calling thread until all in-progress set operations have completed. This is no longer necessary. Replacements for previous uses of -synchronize depend on what the intent of calling synchronize was. If you synchronized...
- ...before reading in order to fetch updated values: remove the synchronize call
- ...after writing in order to notify another program to read: the other program can use KVO to observe the default without needing to notify
- ...before exiting in a non-app (command line tool, agent, or daemon) process: call CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication)
- ...for any other reason: remove the synchronize call
*/
open func synchronize() -> Bool