Как переменные экземпляра и методы хранятся в объекте Objective -C 2.0?

В устаревшей версии 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, поскольку в структуре есть только одно поле, представляющее объекты?

5
задан Lebyrt 8 May 2014 в 11:58
поделиться