Wie wird in Cocoa der ID-Typ definiert?

8

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.

    
calvinlough 02.01.2010, 05:36
quelle

5 Antworten

23

Halten Sie die Befehlstaste gedrückt und doppelklicken Sie auf einen markierten Term, um zu seiner Definition zu springen.

%Vor%     
Azeem.Butt 02.01.2010, 05:44
quelle
7

Es wird in /usr/include/objc/objc.h (auf Leopard) wie folgt delcared:

%Vor%

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:

Ссылка

    
Mike 02.01.2010 05:49
quelle
6

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.

    
Oren Trutner 02.01.2010 05:44
quelle
2

Der id Typ wird allgemein wie folgt deklariert:

%Vor%

Dies ist kritisch für Objective-C ++, wo der Typ Teil eines Mangled-Funktionsnamens ist.

Sie können in /usr/include/objc/objc.h

nachsehen     
caleb 02.01.2010 05:46
quelle
0

Sie können das Dokument hier beziehen: Ссылка Hoffe, das wird dir einen Gefallen tun

    
Jason Lee 16.02.2012 06:40
quelle

Tags und Links