Динамическое связывание
Динамическое связывание определяет метод для вызова во время выполнения вместо во время компиляции. Динамическое связывание также упоминается как позднее связывание. В Objective C все методы разрешены динамично во время выполнения. Точный выполняемый код определяется обоими имя метода (селектор) и принимающий объект.
Динамическое связывание включает полиморфизм. Например, рассмотрите набор объектов включая Dog
, Athlete
, и ComputerSimulation
. Каждый объект имеет свою собственную реализацию a run
метод. В следующем фрагменте кода, фактический код, который должен быть выполнен выражением [anObject run]
определяется во время выполнения. Система во время выполнения использует селектор для метода run
идентифицировать надлежащий метод во что класс anObject
оказывается.
NSArray *anArray = [NSArray arrayWithObjects:aDog, anAthlete, aComputerSimulation, nil]; |
id anObject = [anArray objectAtIndex:(random()/pow(2, 31)*3)]; |
[anObject run]; |
Пример иллюстрирует, как динамический Objective C — эта функция используется глубоко в Какао.