2011-02-03 3 views
5

Apple fournit de la documentation pour la gestion des préférences utilisateur via Core Foundation et Foundation Kit. Il n'offre également aucune aide pour choisir l'un ou l'autre, sauf pour indiquer qu'ils sont en effet différents ("pas de pont sans frais").NSUserDefaults vs CFPreferences, quoi considérer

Donc, je suis intéressé, y a-t-il quelque chose que je devrais envisager de choisir le mécanisme de configuration pour l'application? Ou devrais-je simplement jeter une pièce de monnaie?

Merci!

Répondre

4

Vous êtes censé utiliser NSUserDefaults, ce qui est absolument le choix par défaut. Je suppose que vous pouvez utiliser CFPreferences, mais à moins que vous n'ayez une bonne raison de faire ce choix, je m'abstiendrai de CF -APIs.

+0

Je n'ai pas trébuché sur 'CFPreferences' accidentellement, ces fonctions sont utilisées dans plusieurs didacticiels Apple, par ex. [celui-ci] (http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/PreferencePanes/Tasks/Sample.html#//apple_ref/doc/uid/20000710-BABFCABJ). Mais merci pour la contribution, je cherchais à entendre quelqu'un d'expérience. –

+4

De même, y a-t-il une raison particulière * d'éviter les CF-API *? –

+4

@Nikita Rybak: Ils sont généralement plus difficiles à utiliser (à tout le moins parce qu'il n'y a pas de moyen facile d'auto-libérer des objets CF). CFPreferences est spécifiquement conçu pour vous permettre de travailler avec les préférences de n'importe quelle application, et pas seulement la vôtre, et pour cela, c'est en fait plus facile. Pour travailler avec vos propres préférences, NSUserDefaults est plus facile, vous devriez donc l'utiliser pour cette raison. –

0

NSUserDefaults lit et écrit dans la portée de l'utilisateur, tandis que CFPreferences prend en charge l'écriture à la fois sur la portée de l'utilisateur et sur la portée de la machine. Vous pouvez utiliser CFPreferences pour un paramètre machine qui peut être appliqué à tous les utilisateurs utilisant l'application sur la même machine.