Взаимодействие со временем выполнения

Программы Objective C взаимодействуют с системой во время выполнения на трех отличных уровнях: через исходный код Objective C; через методы, определенные в NSObject класс платформы Основы; и через прямые вызовы функций времени выполнения.

Исходный код Objective C

По большей части система во время выполнения работает автоматически и негласно. Вы используете его только путем записи и компиляции исходного кода Objective C.

При компиляции кода, содержащего классы Objective C и методы компилятор создает структуры данных и вызовы функции, реализующие динамические характеристики языка. Структуры данных получают информацию, найденную в классе и определениях категории и в объявлениях протокола; они включают класс и объекты протокола, обсужденные в Определении Класса и Протоколов в Языке программирования Objective C, а также селекторов метода, шаблонов переменной экземпляра и другой информации, дистиллированной от исходного кода. Основная функция времени выполнения является той, отправляющей сообщения, как описано в Обмене сообщениями. Это вызывается выражениями сообщения исходного кода.

Методы NSObject

Большинство объектов в Какао является подклассами NSObject класс, таким образом, большинство объектов наследовало методы, которые он определяет. (Существенное исключение NSProxy класс; см., что сообщение Передает для получения дополнительной информации.) Его методы поэтому устанавливают способы поведения, которые свойственны к каждому экземпляру и каждому объекту класса. Однако в нескольких случаях, NSObject класс просто определяет шаблон для того, как что-то должно быть сделано; это не обеспечивает весь необходимый код сам.

Например, NSObject класс определяет a description метод экземпляра, возвращающий строку, описывающую содержание класса. Это прежде всего используется для отладки — GDB print-object команда распечатывает строку, возвращенную из этого метода. NSObjectреализация этого метода не знает то, что содержит класс, таким образом, это возвращает строку с именем и адресом объекта. Подклассы NSObject может реализовать этот метод для возврата большего количества подробных данных. Например, Фундаментальный класс NSArray возвращает список описаний объектов, которые он содержит.

Часть из NSObject методы просто запрашивают систему во время выполнения для получения информации. Эти методы позволяют объектам выполнить самоанализ. Примеры таких методов class метод, спрашивающий объект идентифицировать его класс; isKindOfClass: и isMemberOfClass:, которые тестируют позицию объекта в иерархии наследования; respondsToSelector:, который указывает, может ли объект принять определенное сообщение; conformsToProtocol:, который указывает, утверждает ли объект, что реализовал методы, определенные в определенном протоколе; и methodForSelector:, который обеспечивает адрес реализации метода. Методы как они предоставляют объекту возможность заняться самоанализом о себе.

Функции времени выполнения

Система во время выполнения является динамической совместно используемой библиотекой с открытым интерфейсом, состоящим из ряда функций и структур данных в заголовочных файлах, расположенных в каталоге /usr/include/objc. Многие из этих функций позволяют Вам использовать плоскость К для тиражирования то, что делает компилятор, когда Вы пишете код Objective C. Другие формируют основание для функциональности, экспортируемой через методы NSObject класс. Эти функции позволяют разработать другие интерфейсы к системе во время выполнения и произвести инструменты, увеличивающие среду разработки; они не необходимы при программировании в Objective C. Однако несколько функций времени выполнения могли бы при случае быть полезными при записи программы Objective C. Все эти функции документируются в Ссылку Времени выполнения Objective C.