Чем отличается экземпляр класса от объекта класса в objective-c? Задали такой вопрос на собеседовании, я в недоумении ответил "Не понимаю вопроса, разве это не одно и то же?". Просьба сильно не пинать, обж-си учил сам, в ускоренном темпе, и времени разбираться с самой концепцией не было.
Ответ
Я думаю, Вы попали под раздачу из-за недостаточной квалификации собеседующего… если заниматься прямым переводом терминов, то можно много интересного узнать :).
В документации по Obj-C используются термины class object и class instance. Если их дословно перевести на русский, то получится как раз то, о чём Вас спрашивали. Причём в русском языке естественно объект класса считать его экземпляром. В то время, как совершено очевидно, что означает английский термин class object — этот объект, в котором хранится, так сказать, информация о классе.
Class Objects
A class definition contains various
kinds of information, much of it about
instances of the class:
The name of the class and its superclass
A template describing a set of instance variables
The declarations of method names and their return and argument types
The method implementations
This information is compiled and
recorded in data structures made
available to the runtime system. The
compiler creates just one object, a
class object, to represent the class.
The class object has access to all the
information about the class, which
means mainly information about what
instances of the class are like. It’s
able to produce new instances
according to the plan put forward in
the class definition.
Although a class object keeps the
prototype of a class instance,
it’s not an instance itself. It has no instance variables of its own and
it can’t perform methods intended for
instances of the class. However, a
class definition can include methods
intended specifically for the class
object—class methods as opposed to
instance methods. A class object
inherits class methods from the
classes above it in the hierarchy,
just as instances inherit instance
methods.
Комментариев нет:
Отправить комментарий