
Kapitel 8 - Fortsetzung
Wie im dritten Kapitel versprochen kümmern wir uns hier um den Datentyp id. Damit kann man kann man während der Ausführung eines Programmes verschiedene Objekte in einer Variable speichern. Erinnern Sie sich vielleicht an das dritte Kapitel und das Hallo_Welt Beispiel, welches Sie in Xcode mit Hilfe des Interface Builder programmiert haben. Nach der Rückkehr vom Interface builder waren verschiedene Files für Sie angelegt. Im @interface Abschnitt stand folgender Quelltext.
/* MyController */
#import <Cocoa/Cocoa.h>
@interface MyController : NSObject
{
IBOutlet id myTextfeld;
}
- (IBAction)halloButton:(id)sender;
@end
Wir haben den Quelltext anschließend abgeändert in
IBOutlet NSTextField *myTextfeld;
id ist ein Datentyp der in Objective-C hinzugefügt worden ist. In der Programmiersprache C ist der Standartdatentyp int, in Objective-C gibt es noch einen zusätzlichen Datentyp - eben id. Die Variable myTextfeld wurde als ein Objekt von Datentyp id deklariert. Damit kann myTextfeld benutzt werden um jegliches andere Objekt zu speichern. Beachten Sie auch das kein * Asterix, also ein Pointer auf das Objekt myTextfeld gesetzt wird wenn der Datentyp id verwendet wird. Das haben wir erst getan, nachdem der Datentyp id entfernt wurde.
Nur, wenn id jedes Objekt speichern kann, wie weiss dann das Betriebssystem welche Methode aufgerufen wurde? Die Antwort ist: Objective-C erledigt das für Sie, indem es immer darauf achtet welche Objekte zu welcher Klasse gehören. Und zwar macht es diese Zuweisung erst bei der Ausführung des Programms, also nach dem Compilen. id Objekte sind also nichts statisches sondern verändern sich während der Ausführung des Programms - sie werden eben dynamisch gebunden.
Der Datentyp id ist irgendwie auch witzig. Der Datentyp int z.B. beinhaltet die Information dass es sich beim definierten Objekt um eine Objekt aus Ganzzahlen handelt. Z.B.:
int Zahl;
bedeutet, dass Zahl ein Objekt mit einer Ganzzahl ist.
id Zahl;
sagt nichts anderes aus, als das Zahl eben ein Objekt ist. Es beinhaltet keinerlei Information über das Objekt Zahl, ausser eben dass es sich bei Zahl um ein Objekt handelt.
weiter ---- Objective-C Index ---- Startseite----zurück
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