Ho bisogno di sapere come posso fare metodo statico e proprietà statico come metodo statico in Java ..."classe statica in Objective C"
Grazie
Maxime
Ho bisogno di sapere come posso fare metodo statico e proprietà statico come metodo statico in Java ..."classe statica in Objective C"
Grazie
Maxime
in Objective-C quelli sono chiamati metodi di classe, e sono preceduti da un segno più (+)
@interface MyClass : NSObject
+ (void)myClassMethod;
- (void)myInstanceMethod;
@end
metodi statici in Objective C sono noti come metodi di classe e iniziano con un segno '+', ad esempio:
+ (void)aStaticMethod
{
// implementation here
}
Le variabili statiche sono dichiarate utilizzando la parola chiave static
.
Grazie ... è chiaro ora! – Maxime
Non è possibile generare automaticamente le proprietà statiche ma è possibile creare manualmente i metodi statici getter e setter.
+ (NSObject *) myStaticValue;
+ (void)setMyStaticValue:(NSObject *)value;
se si desidera creare proprietà statiche significa che si sta creando una variabile di classe. le proprietà sono utilizzate solo per variabili di istanza. Se si crea una statica, tutti gli oggetti condividono la stessa variabile; Perché è una variabile di classe.
puoi dichiararlo nel file di implementazione della tua classe. Dovrebbe arrivare prima della direttiva del compilatore @implementation. Ma quella variabile statica può usare solo all'interno della sua classe. puoi usarlo tramite i tuoi metodi getter-setter non per proprietà.
Come altri hanno sottolineato, i metodi della classe statici sono preceduti da un segno più (+) nella dichiarazione, in questo modo:
@interface MyClass : NSObject
+ (void)myClassMethod;
@end
Objective-C non ha proprietà statiche così semplice, ed è necessario salto attraverso i seguenti cerchi:
Esempio 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";
}
}
Io non sono un esperto Obj-C, ma questo sembra funzionare bene nel mio codice. Correggimi se qualcosa qui è spento.
Ok, ho capito per il metodo, ma ho bisogno anche di proprietà statiche ... – Maxime