In objective C, classes are objects, but what object owns the class objects?
Affinché un oggetto rimanga intorno non è necessario essere di proprietà di qualcuno. Non vengono mai rilasciati.
Naturalmente il runtime ha puntatori a tutte le classi, quindi in un certo modo si potrebbe obiettare che gli oggetti di classe sono di proprietà del runtime.
Where does the inheritance chain end?
La catena di ereditarietà (o, piuttosto, la catena di superclasse) inizia nella classe di un'istanza e apre la superclasse della superclasse e della superclasse ...
Finisce nella cosiddetta classe radice (ce ne sono diversi, come NSObject
, NSProxy
, e puoi crearne uno tuo). L'obiettivo C ha un'altra complicazione: la classe della classe, chiamata "meta class". C'è anche una catena di meta class. Vedi il diagramma di Greg Parker .
Does each instance of a class inherit pointers to all the other class objects?
No. Ogni istanza ha esattamente un puntatore alla sua classe, il puntatore isa
.
Why am I able to send class objects messages? Are class objects global variables?
Sono riferimenti di simboli inseriti nell'eseguibile dal compilatore, un concetto molto simile alle variabili globali. Un'implementazione @ definisce il simbolo.
Puoi inviare messaggi alle classi perché è così che viene definita la sintassi Objective-C.