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