Ответ 1
Здесь - довольно хорошее объяснение этого вопроса Грегом Паркером
Цитирование:
[...] Каждый класс Objective-C также является объект. Он имеет указатель isa и другие данные, и может реагировать на селекторы. Когда вы вызываете "класс" метод ", как [NSObject alloc], вы фактически отправляя сообщение этому объект класса.
Поскольку класс является объектом, он должен быть экземпляр какого-либо другого класса: a метаклассом. Метакласс - это описание объекта класса, просто как класс - это описание обычные экземпляры. В частности, Список меток метакласса - это класс методы: селектор, который класс объект отвечает. Когда вы отправляете сообщение в класс - экземпляр metaclass - objc_msgSend() выглядит через список методов метакласса (и его суперклассов, если любой), чтобы решить, какой метод вызвать. Методы классов описываются метакласса от имени класса объекта, так же как и методы экземпляра описанный классом от имени объекты экземпляра.
Как насчет метакласса? Это метаклассы полностью вниз? Нет. метакласс - это пример корня класс метакласса; корень метакласса сам является экземпляром корня метаклассом. Цепочка Isa заканчивается цикл здесь: от экземпляра к классу метакласса, чтобы перевести метакласс в себя. Поведение метакласса - это указатели редко имеет значение, поскольку в реальном мир никто не отправляет сообщения объекты метакласса. [...]
Дальнейшее интересное гласит:
Понимание Objective-C времени выполнения от Colin Wheeler
(поиск абзаца под названием "So Classes define objects..." )
Что представляет собой метакласс в Objective-C? Мэтта Галлахера