Является ли объект объектов в Objective-C?

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

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

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

Ответы

Ответ 1

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

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

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

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

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

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

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

Что представляет собой метакласс в Objective-C? Мэтта Галлахера