Destruktor in Objective-C++
Habe ich ein objective-C++ - Klasse, die enthalten einige ehrliche C++ - Objekt-Zeigern.
Wenn die Obj-C++ - Klasse zerstört wird, tut Sie es nennen dealloc sofort? Wenn dem so ist, dann ist der beste Weg, zu zerstören, die C++ - Klasse, indem Sie
delete obj
in der dealloc-Methode hinzu?
InformationsquelleAutor der Frage John Smith | 2010-06-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme an, wenn Sie sagen "Obj-C++ - Klasse" meinst du, eine Objective-C-Klasse passiert, enthalten einige C++ - Klassen.
Objective-C-Klassen nicht aufrufen, dealloc, wenn Sie zerstört; Sie zerstört, indem er die dealloc Nachricht an Sie gesendet.
Mit diesem etwas Pedanterie aus dem Weg, wenn Ihr die init-Methode erzeugt ein Objekt obj dann, ja, rufen
delete obj
in der dealloc:InformationsquelleAutor der Antwort Frank Shearar
Als Ergänzung zu Frank Shearar die richtige Antwort, vorausgesetzt, Sie sind mit der OSX 10.4 oder höher SDK (und Sie sind wahrscheinlich; aber ich bin nicht sicher über die iPhone-Laufzeit hier) Sie können auch C++ Mitglieder der Objective-C-Klassen, d.h. ohne Rückgriff auf einen Zeiger. Das problem in früheren Versionen von OSX SDK wurde, dass der Konstruktor und Destruktor von C++ - member einfach nicht aufgerufen. Jedoch, indem Sie die
fobjc-call-cxx-cdtors
compiler-option (in XCode es ausgesetzt ist als die EinstellungGCC_OBJC_CALL_CXX_CDTORS
), die ctor und dtor wird aufgerufen. Siehe auch Apple-docsein bisschen nach unten, die Seite.InformationsquelleAutor der Antwort harms