2011-04-08 4 views
37

J'utilise [[NSUserDefaults standardUserDefaults] synchronize] chaque fois que j'écris quelque chose sur le plist. Est-ce exagéré? Ou y a-t-il des effets indésirables en faisant cela?Meilleure pratique pour NSUserDefaults synchroniser

+0

Je suis à peu près sûr qu'il l'efface automatiquement quand le programme le «sent» comme ça. Je sais que c'est un peu vague mais ça marche. Vous devriez envisager de regarder dans NSUserDefaultsController à la place. – alexy13

Répondre

51

Oui, il peut être exagéré, mais dans une application simple, vous remarquerez un coup de performance? probablement pas si vous enregistrez seulement après une interaction utilisateur de base telle que l'utilisateur sélectionnant ses paramètres. L'avantage d'appeler synchroniser plus souvent est de savoir si votre application peut tomber en panne et que les informations que vous enregistrez sont importantes, sinon iOS la sauvegarde régulièrement pour vous.

+1

Merci pour la perspicacité. –

6

La méthode de synchronisation, appelée automatiquement à intervalles réguliers, permet de synchroniser le cache en mémoire avec la base de données par défaut d'un utilisateur.

L'appel peut souvent entraîner des problèmes de performance, mais ce n'est pas trop si elle est une petite application (comme déjà mentionné), ou si vous avez vraiment besoin de votre plist pour être à jour avec les modifications apportées dans le thread en cours ou modifications apportées dans un autre thread dans l'application.

Parce que cette méthode est automatiquement appelée à intervalles réguliers, utiliser cette méthode que si vous ne pouvez pas attendre la synchronisation automatique (par exemple, si votre application est sur le point de quitter) ou si vous souhaitez mettre à jour les paramètres par défaut de l'utilisateur à ce qui se trouve sur le disque même si vous n'avez effectué aucun changement

Le seul effet indésirable que vous pourriez remarquer est probablement une diminution négligeable des performances.