2011-09-20 15 views
5

Actualmente estoy usando una propiedad en la clase AppDelegate.Establecer @property de una clase Singleton

Ahora, como mis necesidades se gastan, necesito más de 1 de estas propiedades globales, así que pensé en hacer una clase de Singleton que mantendrá las propiedades y las gestionará. Encontré mucha información sobre Singletons, pero no pude entender, ¿es posible modificar la propiedad sin tener una Instancia de la clase?

Por ejemplo:

@interface Tools : NSObject 

@property (nonatomic,retain) NSDictionary* item; 

... 

@end 

me gustaría hacer:

[Tools setItem:someDict]; 
someClass = [someClass alloc] initWithItem:[Tools getItem]]; 

Todos mis ideas terminaron con el problema de que las herramientas de clase tiene ningún caso. He intentado configurar el elemento para que sea una variable estática (no propiedad), lo que funcionó, pero estoy seguro de que este no es el motivo correcto para hacerlo.

relacionada pero diferente cuestión, Adición:

#import "Tools.h" 

Para el archivo Prefix.pch-proyecto, por lo que las propiedades de los elementos estarán disponibles desde todas partes en el proyecto, es una buena idea?

Respuesta

5

Tienes razón en que necesitas una instancia para usar un singleton. Pero, ¿dónde está el problema?

[Tools sharedInstance].item = someDict; // or 
[[Tools sharedInstance] setItem:someDict; 

El método sharedInstance asegura la creación de instancias correctas de la única instancia de Tools. Me acostumbre. La alternativa es un miembro de la clase. Usted puede mirar a este tema:

BOOL being reset to NO in init method

+0

Gracias! eso es exactamente lo que estaba tratando de hacer. – EladG

0

Hay una discusión sobre @properties de clase en this ARC-related thread (la forma recomendada de hacer únicos con arco es con métodos de clase). Las variables de clase aún no existen, pero sugiero que archive un radar para votar la función.

Cuestiones relacionadas