ich, dass auf iOS Laufzeit gelesen wird Klasse struct (so sind andere oc Objekte), die unten wie ist:Warum Apple Doppelzeiger für Methodenlisten in Klasse-Typ-Struktur verwendet, um auf iOS Laufzeit
struct objc_class {
Class isa OBJC_ISA_AVAILABILITY;
#if !__OBJC2__
Class super_class OBJC2_UNAVAILABLE;
const char *name OBJC2_UNAVAILABLE;
long version OBJC2_UNAVAILABLE;
long info OBJC2_UNAVAILABLE;
long instance_size OBJC2_UNAVAILABLE;
struct objc_ivar_list *ivars OBJC2_UNAVAILABLE;
struct objc_method_list **methodLists OBJC2_UNAVAILABLE;
struct objc_cache *cache OBJC2_UNAVAILABLE;
struct objc_protocol_list *protocols OBJC2_UNAVAILABLE;
#endif
} OBJC2_UNAVAILABLE;
In oben Struktur gibt es diese:
struct objc_method_list **methodLists OBJC2_UNAVAILABLE;
ich bin Neuling in C
und ich verstehe nicht ganz, warum OC-Zeiger mit **
für Methodenliste auf Zeiger.
struct objc_cache *cache OBJC2_UNAVAILABLE;
Da Cache enthält auch Methoden, die früher verwendet wurden:
Warum gerade die gleiche Struktur wie Cache es nicht verwenden.
Ich denke, Apple Doppelzeiger **
für method lists
statt einzelner *
für cache
oder protocols
aus einem Grunde verwendet.
Und warum heißt es methodLists
statt methodList
?
Ich vergleiche jetzt cache
, protocols
mit methodLists
.
Ich denke, Apple verwendet **
für Methodenlisten anstelle von *
für andere aus einem technischen Grund und ich möchte wissen.
Wenn ein Zeiger *
ist genug für Methodenlisten, warum Apple störte mit Doppel **
?
Sie betrachten eine Definition für vor ObjC 2 Klassen. Diese Spezifikation ist mittlerweile ziemlich alt, da wir bereits seit einigen Jahren ObjC 2.x haben (mindestens 6, IIRC). Auf jeden Fall fragst du, warum Apple (oder sogar NeXT) es so entworfen hat, und das ist die Meinung. Die Frage gehört nicht zu SO. – Avi
Mein C ist rostig, aber ist das nicht so, wie man eine Reihe von Zeigern deklariert, die malloziert werden? – danh
@Avi Ich frage nicht die Meinung, ich frage, warum ich nicht einfach eine einfache verknüpfte Liste '* methodList' wie '* protocols' oder' * cache' verwenden kann, und warum es 'methodLists' anstelle von' methodList ist '. – Boris