2009-06-02 5 views
0

Dans l'application je travaille, je suis la génération d'un nom d'utilisateur et mot de passe et de les stocker dans [NSUserDefaults standardUserDefaults]. Je sais qu'il y a des informations à l'échelle du système que vous pouvez récupérer à partir de là; cela signifie-t-il que toutes les applications sur le téléphone ont accès à tout ce qu'il y a dedans? Je suis actuellement en train de préfixer les clés que j'utilise avec des chaînes de caractères liées au nom de mon application pour éviter les conflits avec d'autres applications, mais est-ce nécessaire? Et si oui, existe-t-il un meilleur moyen d'éviter de telles collisions?Devrais-je m'inquiéter des collisions dans NSUserDefaults?

Répondre

1

NSUserDefaults utilise le concept abstrait de "chemins de recherche" pour rechercher les valeurs par défaut. Si vous ne le personnalisez pas, l'objet standard par défaut apparaîtra à trois endroits; les arguments de lancement, les préférences de votre application et les préférences du système (par exemple, les options de localisation globale). Vous pouvez également ajouter manuellement des identifiants pour d'autres chemins de recherche, si vous souhaitez partager les mêmes préférences entre plusieurs applications (je n'ai pas essayé cela avec l'iPhone, donc je ne sais pas si c'est disponible sur Cocoa Touch ou si vous ne peut le faire que sur OS X).

Vous pourriez potentiellement avoir un conflit avec l'une des préférences du système, mais comme le chemin de recherche de votre application est recherché, il n'y a jamais de problème.

2

n ° NSUserDefaults ne sont pas l'ensemble du système. Nomme-les comme tu veux, ça ira. :)

8

Vous devez également stocker les noms d'utilisateur et les mots de passe dans le trousseau et non dans les valeurs par défaut de l'utilisateur. En les stockant dans les valeurs par défaut des utilisateurs, vous les ouvrez à l'espionnage lorsque vous sauvegardez les données sur leur Mac.

Questions connexes