Diese Frage ist reine Neugier. Wie definiert Cocoa den ID-Typ? Ist es nur ein typedef für eine void *? Auch wenn Sie wissen, in welcher Header-Datei es definiert ist, würde ich gerne einen Blick darauf werfen.
Halten Sie die Befehlstaste gedrückt und doppelklicken Sie auf einen markierten Term, um zu seiner Definition zu springen.
%Vor% Es wird in /usr/include/objc/objc.h
(auf Leopard) wie folgt delcared:
Was bedeutet, dass es nicht void *
ist, sondern ein Zeiger auf eine Struktur, die ein einzelnes Element enthält, das auf die Klassendefinition zeigt. Interessant in der Tat.
Ich erinnere mich, als ich gerade in C einstieg und lernte, dass Objective-C anfänglich nur als Preprozessor-Schicht auf C implementiert wurde. Das ist nicht mehr so.
Die beste Lektüre zu dem Thema, das ich gefunden habe:
in objc.h
%Vor%Um selbst herauszufinden, klicken Sie in XCode mit der rechten Maustaste auf id - oder auf einen anderen Typ - und wählen Sie Zur Definition springen . Es ist interessant, die Ähnlichkeiten zu anderen C / C ++ - basierten Objektsystemen zu bemerken; Ein Objektzeiger - eine ID - zeigt auf eine Struktur, die mit einem Punkt auf Informationen zur gemeinsamen Klasse beginnt. Ich viele C ++ - Implementierungen, das wäre die virtuelle Funktionstabelle, wie es mit Microsoft COM wäre. In Cocoa werden die Einzelheiten von objc_class uns in der Header-Datei nicht offenbart.
Tags und Links cocoa