Что такое isa-указатель?
Суть
isa — первое поле каждого объекта Objective-C: ссылка на его класс. Через неё objc_msgSend находит таблицу методов и кэш, а рантайм — список ivar, свойств и протоколов. У класса тоже есть isa — он указывает на метакласс, в котором лежат методы класса (+). Метаклассы замыкаются на метакласс корневого класса NSObject.
#import <Foundation/Foundation.h>
#import <objc/runtime.h>
static void inspect(void) {
NSObject *obj = [NSObject new];
Class cls = object_getClass(obj); // NSObject
Class meta = object_getClass(cls); // метакласс NSObject
BOOL isMeta = class_isMetaClass(meta); // YES
NSLog(@"%@ %@ %d", cls, meta, isMeta);
}
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep