Динамический контроль типов

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

Динамический контроль типов контрастирует со статическим контролем типов, в котором система явно идентифицирует класс, которому объект принадлежит во время компиляции. Статический тип, проверяющий во время компиляции, может гарантировать более строгую целостность данных, но в обмен на ту целостность, динамический контроль типов дает Вашей программе намного большую гибкость. И через объектный самоанализ (например, спрашивая анонимный объект с динамическим контролем типов, что его класс), можно все еще проверить тип объекта во время выполнения и таким образом проверить его пригодность для определенной работы.

Следующий пример иллюстрирует динамический контроль типов с помощью неоднородного набора объектов:

NSArray *anArray = [NSArray arrayWithObjects:@"A string", [NSDecimalNumber zero], [NSDate date], nil];
NSInteger index;
for (index = 0; index < 3; index++) {
    id anObject = [anArray objectAtIndex:index];
    NSLog(@"Object at index %d is %@", index, [anObject description]);
}

Объект, на который указывает переменная во время выполнения, должен быть в состоянии реагировать безотносительно сообщений Вы отправляете к нему; иначе, Ваша программа выдает исключение. Фактическая реализация вызванного метода определяется с помощью динамического связывания.

isa Указатель

Каждый объект имеет isa переменная экземпляра, идентифицирующая класс объекта. Время выполнения использует этот указатель для определения фактического класса объекта, когда это должно.

Необходимые как условие статьи

    (Ни один)

Категорическое обсуждение