Logo

Objective-C, Xcode und Cocoa Tutorial


 

 

EIN TUTORIAL ZU OBJECTIVE-C, XCODE UND COCOA

 

Kapitel 9 - Fortsetzung

Auf die statisch definierte Variable gCounter kann nach deren Platzierung vor dem @Implementation Abschnitt nun von allen in der Datei folgenden Methoden (oder Funktionen) zugegriffen werden, nicht jedoch von ausserhalb dieser Datei. Die allocF Methode erhöht die gCounter Variable jeweils und verwendet dann die alloc Methode um eine neue Bruch Klasse zu erzeugen und das Ergebnis dann zu retunieren. Die extern Deklarationen werden nicht unbedingt gebraucht weil gCounter bereits innerhalb der Datei definiert wurde, es hilft lediglich jemandem der das Programm liest zu sehen, dass ein Zugriff auf eineVariable die ausserhalb der Methode definiert wurde erfolgte. Das folgende Programm testet die neue Methode.

#import "Bruch.h"
int main (int argc, char *argv[])
{
Bruch *a, *b, *c;
printf (" Zahl der allocierten Bruch Klasse: %i\n", [Bruch count]);

a = [Bruch allocF]
b = [Bruch allocF]init];
c = [Bruch allocF];

printf ("Zahl der allocierten Bruch Klasse: %i\n", [Bruch count]);

[a free];
[b free];
[c free];

return 0;
}

 

Programm output
-----------------------------------------------------------------------------------------------------------------
Zahl der allocierten Bruch Klasse: 0
Zahl der allocierten Bruch Klasse: 3
-----------------------------------------------------------------------------------------------------------------

Wenn das Programm gestartet wird, wird der couter auf 0 gesetzt. Nachdem die allocF Methode dreimal angewendet wurde, wird count auf drei gesetzt und zurückgegeben.



 

Speicher Klassen Spezifikationen - storage Class Specifiers

Neben extern und static gibt es noch eine Reihe anderer Spezifikatoren die Sie setzen können. Hier noch ein paar mehr:

auto
Wie dieses Schlüsselwort schon erahnen lässt, kann man mit auto eine automatische Variable deklarieren. Innerhalb einer Funktion oder Methode stellt auto den Grundzustand dar, weshalb er nicht benötigt wird. Z.B.:

auto int x;

deklariert x als automatische Variable innerhalb eines Methoden- oder Funktionsblockes (das ist der Abschnitt zwischen den geschwungenen Klammern). Jedesmal wenn der Block aufgerufen wird, wird die Variable allokiert und ist der Block durchlaufen wieder deallokiert. Da es den Grundzustand innerhalb von Funktionen oder Methoden darstellt, muss er nicht angewendet werden.

auto int x;

entspricht ist demnach das gleiche wie:

int x;

Sie werden dieses Schlüsselwort also nie in Anwendung sehen. Im Gegensatz zu statischen Variablen, deren Initialwert null darstellt, haben automatische Variablen keinen Initialwert.

register
Wenn eine lokale Variable sehr oft benutzt wird, kann man Sie auch in einem Register ablegen wann immer die Variable aufgerufen wird. Man definiert:

register int x;

Register hatte eine Bedeutung für ältere Compiler, die heutigen Compiler benötigen eigentlich kein register mehr.

const
Dieses Schlüsselwort wird verwendet, wenn man eine Variable definieren will, die während des gesamten Programmausführung nicht verändert werden soll. Das bekannteste Beispiel ist für eine konstante Variable ist die Variable pi zur Bereichnung von Kreisen oder Kugeln. Die Definition lautet dann:

const double pi = 3.14;

pi muss in einem solchen Fall gleich definiert werden, da er ja nicht mehr verändert werden kann. Also nicht so:

const double pi;
pi = 3.14;

volatile
volatile ist genau das Gegenteil von const. Es teilt dem Compiler expizit mit, dass die nachfolgende Variable während der Programmausführung verändert wird.

 


weiter ---- Objective-C Index ---- Startseite----zurück


Das Inhaltsverzeichnis

EINSTIEG
KAPITEL 1: SCHRITT FÜR SCHRITT ZUM ERSTEN PROGRAMM
KAPITEL 2: OBJEKTE, KLASSEN, INSTANZEN UND METHODEN
KAPITEL 3: DIE VERSCHIEDENEN DATENTYPEN
KAPITEL 4: DIE PROGRAMMSCHLEIFEN
KAPITEL 5: ENTSCHEIDE DICH, ENTWEDER ODER....
KAPITEL 6: UND NOCHMALS KLASSEN
KAPITEL 7: VERERBUNG
KAPITEL 8: POLYMORPHISMUS, DYNASCHISCHE TYPISIERUNG UND DYNAMISCHES BINDEN
KAPITEL 9: NOCH MEHR DATENTYPEN UND VARIABLEN
KAPITEL 10: CATEGORIES, POSING AND PROTOCOL
KAPITEL 11: DER PRÄPROZESSOR

 

 

 

Links