Динамическое связывание
Динамическое связывание определяет метод для вызова во время выполнения вместо во время компиляции. Динамическое связывание также упоминается как позднее связывание. В 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 — эта функция используется глубоко в Какао.