Méthode de synchronisation NSUserDefaults

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:@"xxxxxxxx" forKey:@"name"]; [defaults synchronize]; 

J’ai besoin de savoir pourquoi je dois utiliser la dernière ligne du code ci-dessus [defaults synchronize] ? Quel est le but de l’utiliser? Est-ce un must?

Le but de [default synchronize]; est de faire en sorte que les valeurs par défaut de l’utilisateur soient écrites sur le disque immédiatement . Vous n’avez pas besoin de l’appeler explicitement, iOS le fait déjà aux moments appropriés. Vous pouvez donc supprimer cette ligne. En fait, c’est un problème de performance si vous appelez la synchronize chaque fois que vous définissez une valeur par défaut.

Avant iOS 7, les parameters par défaut de l’utilisateur étaient toujours synchronisés lorsque l’application passait en arrière-plan. À partir d’iOS 7, ce n’est plus le cas. Vous pouvez donc appeler synchronize dans applicationDidEnterBackground de votre délégué d’ applicationDidEnterBackground: ou vous inscrire à la notification UIApplicationDidEnterBackgroundNotification pour cela.

De la documentation pour -[NSUserDefaults synchronize] :

Étant donné que cette méthode est appelée automatiquement à intervalles réguliers, utilisez cette méthode uniquement si vous ne pouvez pas attendre la synchronisation automatique (par exemple, si votre application est sur le sharepoint quitter) ou si vous souhaitez mettre à jour l’utilisateur par défaut. vous n’avez apporté aucune modification.

Vous n’avez plus besoin d’écrire cette ligne.

La référence de méthode de la documentation mise à jour

Attend toutes les mises à jour asynchrones en attente de la firebase database par défaut et les renvoie; cette méthode est inutile et ne doit pas être utilisée.

Commentaires sur la méthode expliquant quoi faire.

  /*! -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 

Oui, avec cette ligne, vous indiquez à votre système de télécharger les NSUserDefaults avec vos nouvelles valeurs par défaut.

Vous pouvez trouver toutes les informations ici: