В устаревшей версии Objective -C структура класса objc _реализована следующим образом:
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;
};
Таким образом, структура, представляющая объект, хранит указатель на класс объекта, указатель на суперкласс объекта, имя класса объекта, версию объекта, информацию и размер экземпляра, список переменных экземпляра объекта, список методов объекта, кэш объекта и список протоколов объекта. Наличие этих полей в структуре, представляющей объект, вполне объяснимо, поскольку каждое из них хранит информацию об объекте.
Однако реализация Objective -C 2.0 того же класса struct objc _выглядит так:
struct objc_class {
Class isa;
};
Итак, в этой версии класса objc _в структуре :есть только одно поле — указатель на структуру класса объекта.
Тогда мой вопрос заключается в том, как другая информация об объекте хранится в Objective -C 2.0, поскольку в структуре есть только одно поле, представляющее объекты?