In der Vorgängerversion von Objective-C wird eine objc_class Struktur wie folgt implementiert:Wie werden Instanzvariablen und Methoden in einem Objective-C 2.0-Objekt gespeichert?
struct objc_class {
Class isa;
Class super_class;
const char *name;
long version;
long info;
long instance_size;
struct objc_ivar_list *ivars;
struct objc_method_list **methodLists;
struct objc_cache *cache;
struct objc_protocol_list *protocols;
};
So ist die Struktur, die speichert einen Zeiger auf die Klasse des Objekts ein Objekt darstellt, einen Zeiger auf denen das Superklasse des Objekts , den Klassennamen des Objekts, die Version des Objekts, die Informationen und die Instanzgröße, die Liste der Instanzvariablen des Objekts, die Methodenliste des Objekts, den Cache des Objekts und die Protokollliste des Objekts. Das Vorhandensein dieser Felder in der Struktur, die ein Objekt darstellt, ist ziemlich verständlich, da jede von ihnen eine Information über das Objekt speichert.
jedoch die Objective-C 2.0-Implementierung der gleichen Struktur objc_class ist wie folgt:
struct objc_class {
Class isa;
};
Also, in dieser Version von objc_class, gibt es nur ein Feld in der Struktur: ein Zeiger auf das Objekt Klassenstruktur
Meine Frage ist dann, wie sind die anderen Informationen über das Objekt in Objective-C 2.0 gespeichert, da es nur ein Feld in der Struktur gibt, die die Objekte darstellt?
Interessante Lektüre: [\ [Objc zu erklären \]: Nicht-fragile Ivars] (http://www.sealiesoftware.com/blog/archive/2009/01/27/objc_explain_Non-fragile_ivars.html) –