Являются ли classы объектами Objective-C?

хорошо, поэтому я понимаю, что объект является экземпляром classа, который должен быть выделен и инициализирован, но являются ли classы самими объектами?

Я знаю, когда вы создаете новый class, это экземпляр чего-то другого, например NSObject. Итак, если это делает его classом, тогда объекты могут содержать не только переменные и методы, но и другие объекты, верно?

Извините, это, вероятно, очень просто, но я читаю две книги о cocoa и xcode, и этот момент немного неясен (вероятно, из-за моего отсутствия опыта на других языках).

Вот довольно хорошее объяснение этого вопроса Грегом Паркером

Цитирование:

[…] Каждый class Objective-C также является объектом. Он имеет указатель isa и другие данные и может реагировать на селекторы. Когда вы вызываете «метод classа», например [NSObject alloc], вы фактически отправляете сообщение этому объекту classа.

Поскольку class является объектом, он должен быть экземпляром другого classа: метаclassа. Метаclass – это описание объекта classа, так же как class – это описание обычных экземпляров. В частности, список методов метаclassа – это методы classа: селекторы, на которые отвечает объект classа. Когда вы отправляете сообщение в class – экземпляр метаclassа – objc_msgSend () просматривает список методов метаclassа (и его суперclassы, если есть), чтобы решить, какой метод вызывать. Методы classа описываются метаclassом от имени объекта classа, так же как методы экземпляров описываются classом от имени объектов экземпляра.

А как насчет метаclassа? Это метаclassы полностью вниз? Нет. Метаclass – это экземпляр метаclassа корневого classа; корень метаclassа сам является экземпляром корневого метаclassа. Цепочка isa заканчивается в цикле здесь: экземпляр classа к метаclassу для корневого метаclassа для себя. Поведение метаclassа isa-указатели редко имеет значение, поскольку в реальном мире никто не отправляет сообщения метаclassическим объектам. […]

Дальнейшее интересное гласит:

Понимание выполнения Objective-C Runtime от Colin Wheeler
(поиск абзаца под названием «So Classes define objects …»)

Что такое метаclass в Objective-C? Мэтт Галлахер

Давайте будем гением компьютера.