tutorial iphone cocoa-touch

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?



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