2012-04-01 15 views

Respuesta

7

NSUserDefaults son para cosas que requieren persistencia, es decir, está planeando almacenarlas entre inicios de la aplicación. Para variables temporales, considere usar una instancia de singleton , como la clase MySingleton ilustrada en esta respuesta: https://stackoverflow.com/a/145164/108574.

Cuando tenga esta clase, coloque sus variables temporales como property de esta clase para facilitar el acceso. Y cuando necesite acceder, simplemente llame al [MySingleton sharedSingleton].variable.

También verifique aquí: http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html para más información.

2

Dependiendo de sus necesidades precisas, puede conocer y utilizar el patrón de diseño Singleton para crear un tipo de objeto de base de datos que se pueda compartir en todas las vistas. Lea acerca de iOS Singletons here.

Así es como logré lo que está buscando en mi aplicación para iOS.

10

En general, desea evitar el uso de globales. Si necesita acceder a datos que deben compartirse, existen dos enfoques comunes.

Ponga los valores en su AppDelegate.

Si solo tiene uno o dos valores compartidos, AppDelegate es una manera fácil de colocar contenido compartido.

El AppDelegate se puede acceder desde los controladores como tal:

FooApp* appDelegate = (FooApp*)[[UIApplication sharedApplication] delegate]; 

Dónde FooApp es el nombre de la clase de aplicación.

Cree una clase singleton.

que contamina su AppDelegate con una gran cantidad de valores compartidos no es lo ideal, y/o si desea que estos valores persistan de sesión a sesión, la creación de una clase Singleton que está respaldado por NSUserDefaults es otra manera de compartir los valores a través de instancias.