Является ли класс объектом или структурой? - PullRequest
4 голосов
/ 15 июня 2010

Является ли Class объектом или структурой?

Ответы [ 4 ]

6 голосов
/ 15 июня 2010

Классы Objective-C рассматриваются как объекты с некоторыми ограничениями (см. Язык программирования Objective-C ):

Таким образом, объекты класса являются полноценными объектами, которые могутбыть динамически типизированным, получать сообщения и наследовать методы от других классов.Они отличаются только тем, что созданы компилятором, им не хватает собственных структур данных (переменных экземпляра), кроме тех, которые построены из определения класса, и являются агентами для создания экземпляров во время выполнения.

За сценой определение класса содержит различную информацию, большую часть которой об экземплярах класса:

  • Имя класса и его суперкласса
  • Шаблонописание набора переменных экземпляра
  • Объявления имен методов и их типов возврата и аргументов
  • Реализации метода
5 голосов
/ 15 июня 2010

Официально, это реализовано как структура, но среда выполнения Objective C позволяет вам рассматривать Класс как объект. У Какао с Любовью есть отличная статья о , как классы и мета-классы работают в Objective-C .

1 голос
/ 15 июня 2010

Class типы являются ссылочными типами, а struct типы являются типами значений.Экземпляры классов или структурных типов называются объектами.

0 голосов
/ 31 мая 2012

Class - это тип, который может содержать указатель на объект класса (аналогично тому, как id является типом, который может содержать указатель на любой объект). Class не является именем класса (аналогично тому, как id не является именем класса). Класс объекта класса является метаклассом этого класса (не будем вдаваться в подробности). Объекты класса являются первоклассными объектами; и вы можете делать с ними те же вещи, что и обычные объекты. Вызов метода для объекта класса вызывает метод класса для этого класса (или некоторого класса предка); Вы также можете вызывать методы экземпляра корневого класса класса для объекта класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...