2012-08-23 20 views
10

Soy nuevo en objective C, he creado una aplicación en la que he usado tanto NSUserDefault como Keychain para almacenar mi nombre de usuario y contraseña. Pero no puedo diferenciar ambos. Por favor ayuda a diferenciar ambos.¿Diferencia entre Keychain y NSUserDefault?

Gracias.

+0

Este es un comentario muy evidente sólo para simplificar su comprensión de llavero. Keychain y NSUserDefault son ** muy similares **. Para ambos, simplemente hagan algo así como * establecer un objectforKey y luego hacer ObjectForKey para leerlo * Ambos almacenan hashes. Tanto Keychain como NSUserDefault serán sandbox pero Keychain no será desasignado de la memoria, incluso si su aplicación está desinstalada. Todavía estará allí la próxima vez que instale. También hay un llavero para iCloud que funciona en varios dispositivos, pero esa es una historia diferente – Honey

Respuesta

10

A llavero es un contenedor cifrado que contiene contraseñas para múltiples aplicaciones y servicios seguros. Apple Inc. usa llaveros como sistema de administración de contraseñas en Mac OS e iOS.

NSUserDefaults Proporciona una forma de personalizar el comportamiento de la aplicación en función de las preferencias del usuario. Pertenece al marco de la Fundación para Cocoa y Cocoa Touch.

Tengo esta información de la etiqueta de NSUserdefaults y keychain

4

Adición: Cuando salvamos usuario y contraseña. y Eliminar aplicación del dispositivo.

En llavero: nombre de usuario y contraseña todavía está allí.

En NSUserDefaults: UserName y Password también se eliminan del dispositivo con su aplicación.

1

Trate de evitar guardar datos tanto como sea posible.

Keychain - llavero es seguro & manera encriptada para guardar los datos de almacenamiento pequeños, como nombre de usuario, contraseña, etc. Cuidado con los datos de llavero puede acceder desde los dispositivos con jailbreak. Puede obtener el código de muestra de Apple en here.

Keychain Sharing - Activar el uso compartido llavero permite su aplicación para compartir las contraseñas en el llavero con otras aplicaciones desarrolladas por su equipo. Supongamos que creamos dos aplicaciones en las que los usuarios pueden iniciar sesión en la misma cuenta. Sería bueno tener la capacidad de compartir la información de inicio de sesión entre estas aplicaciones. De esta forma, el usuario solo deberá iniciar sesión una vez en una de las aplicaciones.

UserDefaults un interfaz a la base de datos por defecto del usuario, donde se almacenan pares de valores clave persistentemente las invocaciones de la aplicación en un dispositivo dado. UserDefaults no son una forma segura de guardar datos privados. UserDefaults se almacenan como plist localmente, Cualquiera puede realizar un seguimiento en ./Library/Preferences/com.mycompany.MyAppName.plist