Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Implementierungsdatei sieht anders aus als wie im Buch

Implementierungsdatei sieht anders aus als wie im Buch

Basti76Nie
Basti76Nie30.11.1118:13
Hallo,

ich bin gerade dabei mir mit Hilfe eines Buches ein wenig Xcode beizubringen.
Als Anfänger reagiere ich sehr verwirrend, wenn die Darstellung aus dem Buch (Es behandelt Xcode 4.2) und meinem XCode Programm 4.2 sich unterscheiden.

Im Buch geht es darum, eine neue Obj-C Klasse anzulegen. Daraus resultieren dann eine entsprechende h-Datei sowie die m-Datei.

Laut Buch ist die m-Datei automatisch auch gleich mit zwei Methoden init und dealloc befüllt:

#import "Fahrzeug.h"
@Implementation Fahrzeug
-(id)init{
self = [super init];
if (self != nil) {
// Initialization code here.
}
return self;
}
-(void)dealloc {
// Clean-Up code here.
[super dealloc] ;
}
@end

Doch in Wirklichkeit steht in meinem Xcode nur folgendes:

#import "Fahrzeug.h"
@Implementation Fahrzeug
@end

Ist dies ein Einstellungsproblem in XCode oder stimmt mit dem Buch was nicht?

Gruß
Bastian

0

Kommentare

ExMacRabbitPro30.11.1119:21
Das ist nicht schlimm. Apple hat wohl von Xcode 3 4 die Template Files geändert.

...ist mir noch gar nicht aufgefallen...
0
Basti76Nie
Basti76Nie30.11.1122:18
Also muss ich die fehlenden Methoden eben selber aufrufen (eingeben)?
0
bmc desgin30.11.1123:58
Ja...

Kommt aber tatsächlich auf das verwendete Template an...
„Ask your questions...“
0
yan.kun01.12.1116:06
Basti76Nie
Also muss ich die fehlenden Methoden eben selber aufrufen (eingeben)?

Nein. Wenn du die beiden Methoden nicht verändern willst, musst du sie nicht abschreiben. Das hat folgenden Grund.

Objective-C ist eine objektorientierte Programmiersprache und unterstützt die sogenannten Vererbung. Schau mal in die entsprechende .h Datei deiner Klasse, da sollte folgendes stehen:

@interface Fahrzeug : NSObject
@end

: NSObject bedeutet, dass deine Fahrzeugklasse von NSObject abgeleitet wird. Dadurch werden alle Methoden und Eigenschaften von NSObject auf deine Klasse vererbt. Zu den Methoden die NSObject besitzt gehören auch init und dealloc.

Solange du nun mit der Funktionalität der vererbten Methoden zufrieden bist, musst du diese nicht "überschreiben".

-(id)init{
self = [super init];
if (self != nil) {
// Eigener Code kommt hier rein.
}

Hier passiert folgendes. Du definierst in deiner Klasse die Methode init erneut und überschreibst damit die Methode, die aus NSObject geerbt wurde. Über [super init] kannst du jedoch immer noch den Code aus der übergeordneten Klasse aufrufen. Das ist nicht immer sinnvoll, aber vor allem bei init und dealloc unabdingbar.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.