dónde almacenar objects "globales" en iOS

Posible duplicado:
¿Cómo o dónde debo almacenar las instancias de objects que necesito de forma global en mi aplicación de iOS?

Tengo un object global (se usa en casi todas las pantallas de aplicaciones) y en su mayoría se crean justo después de que se inicia la aplicación. Quiero tener acceso a estos objects desde todos mis ViewControllers (nada más, solo ViewControllers). ¿Dónde lo guardas?

Pienso en @property en AppDelegate pero creo (pero puedo estar equivocado) esta es una solución fea.

Los objects pueden ser bastante complejos, esto no es un simple tipo.

Puede hacer que los objects globales sean accesibles colocándolos en una class con methods de class para acceder a objects globales, implementando +(void)load para preparar estos objects y almacenándolos en variables estáticas.

Encabezamiento:

 @interface GlobalObjects +(void)load; +(MyObject1*)myObject1; @end 

Implementación:

 #import "GlobalObjects.h" static MyObject1* _myObject1 = nil; @implementation GlobalObjects +(void)load { _myObject1 = [[MyObject1 alloc] init]; } +(MyObject1*)myObject1 { return myObject1; } @end 

Uso:

 MyObject1 *shanetworking = [GlobalObjects myObject1]; 

También podría hacer que la variable estética dentro de su método para la initialization perezosa.

Sí, utilizo las properties del Delegado de aplicaciones, luego las accedo mediante la conversión de la propiedad delegated shanetworkingApplication.

 __weak AppDelegate *appDelegate = (AppDelegate *)[[UIApplication shanetworkingApplication] delegate]; 

Espero que esto ayude,

Jonathan

@property en AppDelegate es una buena solución. También podría usar un singleton.

El delegado de la aplicación está bien si solo tienes un montón de objects.

De lo contrario, puede crear una especie de "object model" que contenga todos sus datos globales.

O bien, puede almacenarlos con Core Data, si tienen alguna estructura.

Pero, como dije, si tienes solo un par de objects, el delegado de la aplicación simplemente funcionará bien.

si solo se usa entre los controlleres de vista, podría considerar almacenarlo en el controller de vista de nivel más alto que realmente necesita acceso al object compartido (al crear / empujar controlleres nuevos, establecer esa propiedad contada de reference).

de esta manera, podría pensar en el controller de vista maestra que llena los controlleres de vista de detalle con su contenido / models.

eso realmente se está alejando de la calificación como (y de una carga) global.