DevPrep

Все темы › Objective-C

Тип id

Middle PRO

Суть

id — указатель на любой объект Objective-C (технически struct objc_object *; звёздочка уже включена в тип). Это «динамический тип»: с переменной id компилятор разрешает послать любой селектор, известный хотя бы в одном импортированном заголовке, и не требует приведения при присваивании в любой другой объектный тип и обратно. nil — нулевое значение id.

#import <Foundation/Foundation.h>

static void demo(NSArray *items) {
    id first = items.firstObject;         // тип неизвестен до рантайма
    if ([first isKindOfClass:[NSString class]]) {
        NSString *s = first;              // неявное приведение, без cast
        NSLog(@"%lu", (unsigned long)s.length);
    }
    id<NSCopying> key = @"k";             // id, ограниченный протоколом
    NSDictionary *d = @{key: @1};
    NSLog(@"%@", d);
}

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store