2011-04-29 19 views

Respuesta

12

En Objective-C los son llamados métodos de clase, y que están precedidos por un signo más (+)

@interface MyClass : NSObject 

+ (void)myClassMethod; 
- (void)myInstanceMethod; 

@end 
+1

Ok, entiendo por el método, pero también necesito propiedades estáticas ... – Maxime

11

Los métodos estáticos en C Objetivo se conocen como métodos de clase y comenzar con un signo '+', por ejemplo:

+ (void)aStaticMethod 
{ 
    // implementation here 
} 

Las variables estáticas se declaran con la palabra clave static.

+0

Gracias ... ¡está claro ahora! – Maxime

2

No puede tener propiedades estáticas generadas automáticamente, pero puede crear un getter y un setter métodos estáticos manualmente.

+ (NSObject *) myStaticValue; 
+ (void)setMyStaticValue:(NSObject *)value; 
0

si quiere crear propiedades estáticas significa que está creando una variable de clase. las propiedades solo se usan por ejemplo, variable. Si crea una estática significa que todos los objetos comparten la misma variable; Porque es una variable de clase.

puede declararlo en el archivo de implementación de su clase. Debe venir antes de la directiva del compilador @implementation. Pero esa variable estática solo puede usarse dentro de su clase. puede usarlo a través de sus propios métodos getter setter, no por propiedad.

2

Como otros han señalado, los métodos estáticos de clase tienen el prefijo un signo más (+) en la declaración, así:

@interface MyClass : NSObject 
    + (void)myClassMethod; 
@end 

Objective-C no tiene propiedades estáticas es tan simple, y hay que saltar a través de aros de los siguientes:

  1. declarar una estáticas
  2. configurar métodos get y set de variables para el acceso a la misma
  3. retener su valor

Ejemplo completo:

static NSString* _foo = nil; 

@interface MyClass : NSObject 
    + (NSString *)getFoo; 
    + (void)setFoo; 
@end 

// implementation of getter and setter 
+ (NSString *) getFoo { 
    return _foo; 
} 

+ (void) setFoo:(NSString*) value { 
    if(_foo != value) { 
    [_foo release]; 
    _foo = [value retain]; 
    } 
} 

// optionally, you can set the default value in the initialize method 
+ (void) initialize { 
    if(!_foo) { 
    _foo = @"Default Foo"; 
    } 
} 

no soy un experto Obj-C, pero esto parece que funciona bien en mi código. Corrígeme si algo aquí está apagado.

Cuestiones relacionadas