Ответ 1
Официальные и неофициальные протоколы
Существует два разновидности протокола, формальный и неформальный:
Протокол неофициальный - это категория в NSObject, которая неявно делает почти все объекты усыновителями протокол. (Категория - это язык, который позволяет вам добавлять методы в класс без подклассифицируя его.) Внедрение методов в неофициальном протоколе необязательный. Перед вызовом метода, вызывающий объект проверяет, чтобы видеть реализует ли целевой объект Это. До дополнительных методов протокола были введены в Objective-C 2.0, неофициальные протоколы имеют важное значение для способ создания классов Foundation и AppKit реализована делегирование.
A формальный протокол объявляет список методов, которые клиентские классы как ожидается, будут реализованы. формальный протоколы имеют свое собственное выражение, принятия и синтаксиса проверки типов. Вы можете назначить методы, требуется реализация или необязательная с @required и @optional ключевые слова. Подклассы наследуют формальные протоколов, принятых их предками. Формальный протокол может также принимать другие протоколы.
Формальные протоколы являются расширением язык Objective-C.