DevPrep

Все темы › Objective-C

Чем протокол в Obj-C отличается от протокола в Swift?

Middle PRO

Протокол в Objective-C

Список селекторов, которые класс обещает реализовать. Секции @required (по умолчанию) и @optional; наличие опционального метода проверяют в рантайме через respondsToSelector: перед каждым вызовом — иначе unrecognized selector. Протоколы могут наследовать друг от друга (@protocol Foo <NSObject>), типизируют переменные id<Foo>, но:

#import <Foundation/Foundation.h>

@protocol Downloadable <NSObject>
- (NSURL *)downloadURL;
@optional
- (NSInteger)priority;
@end

static NSInteger priorityOf(id<Downloadable> item) {
    if ([item respondsToSelector:@selector(priority)]) {
        return [item priority];
    }
    return 0;
}

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

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

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

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

Скачать DevPrep в App Store