- Registriert
- 07.02.06
- Beiträge
- 62
Hallo Entwickler,
so langsam werde ich mit Xcode und Objective-C warm, aber die Philosophie von Obj-C, Cocoa usw. hab ich aber NOCH nicht verstanden. Da ich aber aus der C/C++ Welt komme, habe ich ein paar Verständnissprobleme. Das Buch "Programming in Objective-C" habe ich mir schon besorgt. Aber wie es immer so ist mit diesen Bücherbeispielen, sie sind immer ideal und vereinfacht gewählt (den Leser bloss nicht verwirren). D.h. auf die eigentlichen nicht trivialen Fragen bekommt man keine Antwort!
Konstruktoren/Destruktoren (ich schreibe mal K und D, das ist kürzer
)
--------------------------------------------------------------------------
Wie bekannt ist, ist in C++ immer ein K und ein D vorhanden. Wenn keiner implementiert wird, wird halt Einer gestellt. In Obj-C gibts es keine K's bzw. D's wie in C++, stattdessen übernimmt die alloc/init-Kombination dieselbe Rolle des K (Also ein Standard der aber nicht verbindlich ist?). Hoffentlich hab ich's bis hierher richtig verstanden.
Darüber hinaus der werden in C++ die K's und D's immer ausgerufen. Ob man will oder nicht.
Wenn ich in C++ einen String in einer Methode benutzen möchte, dann schreibe ich zB. so:
int
Klasse::methode()
{
std::string aString = "blah";
}
Wenn ich die Methode verlasse, weiss ich das der String automatisch zerstört wird (der D wird aufgerufen).
Das gleiche in Obj-C müsste dann folgendermaßen aussehen:
- (int ) methode()
{
NSString *aString;
aString = [[NSString alloc] init];
}
Das Objekt aString wird aber beim verlassen der Methode nicht zerstört (is nur nen Zeiger auf ein Obj, ich weiss). Oder doch? Wie heisst in Obj-C der D? Wenn das Obj nicht zerstört wird, dann ist der Speicherbereich auf den der Zeiger zeigt verloren? Oder etwa nicht?
Ich hoffe ihr versteht mein Verständnissproblem. Wie lange lebt ein Objekt? Wie heissen den K's und D's? Und was hat es mit den autorelease-Pools aufsich?
Hoffentlich habe ich nicht zuviele Rechtschreibfehler gemacht
Thx
Wosinzky
so langsam werde ich mit Xcode und Objective-C warm, aber die Philosophie von Obj-C, Cocoa usw. hab ich aber NOCH nicht verstanden. Da ich aber aus der C/C++ Welt komme, habe ich ein paar Verständnissprobleme. Das Buch "Programming in Objective-C" habe ich mir schon besorgt. Aber wie es immer so ist mit diesen Bücherbeispielen, sie sind immer ideal und vereinfacht gewählt (den Leser bloss nicht verwirren). D.h. auf die eigentlichen nicht trivialen Fragen bekommt man keine Antwort!
Konstruktoren/Destruktoren (ich schreibe mal K und D, das ist kürzer

--------------------------------------------------------------------------
Wie bekannt ist, ist in C++ immer ein K und ein D vorhanden. Wenn keiner implementiert wird, wird halt Einer gestellt. In Obj-C gibts es keine K's bzw. D's wie in C++, stattdessen übernimmt die alloc/init-Kombination dieselbe Rolle des K (Also ein Standard der aber nicht verbindlich ist?). Hoffentlich hab ich's bis hierher richtig verstanden.
Darüber hinaus der werden in C++ die K's und D's immer ausgerufen. Ob man will oder nicht.
Wenn ich in C++ einen String in einer Methode benutzen möchte, dann schreibe ich zB. so:
int
Klasse::methode()
{
std::string aString = "blah";
}
Wenn ich die Methode verlasse, weiss ich das der String automatisch zerstört wird (der D wird aufgerufen).
Das gleiche in Obj-C müsste dann folgendermaßen aussehen:
- (int ) methode()
{
NSString *aString;
aString = [[NSString alloc] init];
}
Das Objekt aString wird aber beim verlassen der Methode nicht zerstört (is nur nen Zeiger auf ein Obj, ich weiss). Oder doch? Wie heisst in Obj-C der D? Wenn das Obj nicht zerstört wird, dann ist der Speicherbereich auf den der Zeiger zeigt verloren? Oder etwa nicht?
Ich hoffe ihr versteht mein Verständnissproblem. Wie lange lebt ein Objekt? Wie heissen den K's und D's? Und was hat es mit den autorelease-Pools aufsich?
Hoffentlich habe ich nicht zuviele Rechtschreibfehler gemacht

Thx
Wosinzky