Variablen im Interface deklariert, von Methoden aber nicht erkannt

NFkB

Neues Mitglied
Thread Starter
Dabei seit
25.02.2008
Beiträge
11
Reaktionspunkte
0
Guten Abend,

bitte sagt mir, welchen Denkfehler ich mache:

Ich habe im Interface einer Klasse eine Variable deklariert:

@interface MeineKlasse : NSObject {
int x;
}

und ebenfalls im Interface Methoden angegeben. Dabei ist die erste vom Interface Builder mit "write classfiles" automatisch geschrieben, die zweite habe ich eingetragen:

@interface MeineKlasse : NSObject {
int x;
}
- (IBAction)Button: (id)sender;
- (void) eigeneMethode;
@end


Hier mein Problem:

Wenn ich über den Button die Methode (IBAction)Button aufrufe und darin die Variable x verwende, z.B.

@Implementation MeineKlasse

- (IBAction)Button: (id)sender{
x = 99;
NSLog (@"%i", x);
}
...

dann wird in der Console natürlich '99' ausgegeben.

Wenn ich jetzt die eigene Methode "eigeneMethode" aufrufe und die Variable erneut verwende, wird über NSLog der Wert '0' ausgegeben:

- (IBAction)Button: (id)sender{
x = 99
MeineKlasse *MeineInstanz;
MeineInstanz = [MeineKlasse alloc];
MeineInstanz = [MeineInstanz init];
[MeineInstanz eigeneMethode];
}

- (void)eigeneMethode {
NSLog (@"%i", x);
}


Ich dachte, im Interface deklarierte Variablen wären für alle in der gleichen Klasse deklarierten Methoden zugänglich?! Es gibt ja auch keine Fehlermeldung, dass die Variable x in der Funktion nicht deklariert wäre...
Aber warum ist Wert 0 und nicht wie vorher gesetzt 99?

Vielen Dank für Eure Hilfe,

Moritz
 
Du hast da eine neue Instanz am Wickel, die natürlich auch ein eigenes 'x' hat. Die Objekte teilen die sich nicht!
 
Was du brauchst, ist das static-Keyword:

Also z.B.
Code:
 static int x;

und deine "eigeneMethode" schaut mir in dem Fall nach einer Klassenmethode aus:
Code:
+ (void)eigeneMethode {
NSLog (@"%i", x);
}
Aufrufbar durch:
Code:
 [MeineKlasse eigeneMethode];

PS: Gewöhn dir sinnvolle Bezeichner gleich beim Rumprobieren an.
 
Zurück
Oben Unten