2011-01-18 19 views

Respuesta

15

Objective-C no tiene variables de clase, y lo que usted llama una variable miembro se llama una variable de instancia. Las variables de instancia se pueden referenciar por nombre desde dentro de un método de instancia. Y si necesita el comportamiento de una variable de clase, puede usar un static de nivel de archivo en su lugar.

He aquí una muestra muy rápido:

foo.h

@interface Foo : NSObject { 
    NSString *foo; 
} 
@end 

Foo.m

static NSString *bar; 

@implementation Foo 
- (void)foobar { 
    foo = @"test"; // assigns the ivar 
    bar = @"test2"; // assigns the static 
} 
@end 
+0

Y lo va a usar como: Foo * myFoo = [[ Foo alloc] init]; [myFoo foobar]; [lanzamiento myFoo]; – nacho4d

+0

Gracias por su respuesta rápida, mi idea es tener una clase NSMutableDictionary que todas las instancias de un objeto compartan, ¿sería una forma correcta de diseño o me falta algo? –

+1

Si necesita un diccionario compartido, eso funciona bien. Querría un nivel de archivo estático en el .m para NSMutableDictionary, y es probable que desee crearlo en su método '+ initialize' (para asegurarse de que existe antes de que las instancias accedan a él). Si alguna vez necesita tocar este objeto fuera del hilo principal, debe usar una cola de despacho de GCD para serializar el acceso a él; de lo contrario, siga adelante y úselo como lo hace normalmente. Tenga en cuenta que deberá incluir una instancia propia en la variable, p. '[[NSMutableDictionary alloc] init]'. Y nunca lo liberes (ya que la clase en sí nunca desaparece). –

Cuestiones relacionadas