Что такое переменная экземпляра isa? - PullRequest
3 голосов
/ 25 апреля 2009

В справочнике по классам NSObject говорится о «переменной экземпляра isa», которая

инициализируется структурой данных, которая описывает класс

Может кто-нибудь объяснить, что я должен знать об этой переменной экземпляра isa? Для чего это хорошо? Что значит isa? Походит на норму, как DIN, ISO, и т.д .; Есть идеи, что это такое?

Ответы [ 2 ]

7 голосов
/ 25 апреля 2009

Используется для определения пути наследования класса. Более формально:

Когда создается новый объект, ему выделяется место в памяти, и его данные в виде переменных его экземпляра инициализируются. Каждый объект имеет по крайней мере одну переменную экземпляра (унаследованную от NSObject) с именем isa, которая инициализируется для ссылки на класс объекта. Благодаря этой ссылке доступ также предоставляется к классам в пути наследования объекта. - Базовое руководство по программированию Objective-C GNUstep: Objective-C

Имя isa происходит от концепции ООП IS-A, которая представляет собой просто взаимосвязь между двумя объектами, подобными этой:

собака IS-A млекопитающее.
Автомобиль IS-A.

Таким образом, переменная экземпляра isa может быть полезна в том смысле, что она может рассказать вам, какие IS-A отношения имеет ваш класс в иерархии наследования.

6 голосов
/ 25 апреля 2009

Это в основном указатель на класс объекта и то, на чем основана среда выполнения Objective-C. Среда выполнения использует его для получения таблицы диспетчеризации методов объектов и всего остального, что хранится в структуре класса. Это почти единственное, что должен иметь каждый объект Objective-C.

По большей части вы можете полностью игнорировать его.

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