Подтвердить что ты не робот

Какая разница между формальными и неофициальными протоколами в Objective-C?

Какая разница между формальными и неформальными протоколами в Objective-C?

4b9b3361

Ответ 1

От Официальная документация

Официальные и неофициальные протоколы

Существует два разновидности протокола, формальный и неформальный:

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

  • A формальный протокол объявляет список методов, которые клиентские классы как ожидается, будут реализованы. формальный протоколы имеют свое собственное выражение, принятия и синтаксиса проверки типов. Вы можете назначить методы, требуется реализация или необязательная с @required и @optional ключевые слова. Подклассы наследуют формальные протоколов, принятых их предками. Формальный протокол может также принимать другие протоколы.

Формальные протоколы являются расширением язык Objective-C.

Ответ 2

Неформальный протокол: Category (Реализации необязательны)

Формальный протокол: Extension (Реализации являются необязательными и требуются)

Ответ 3

Язык Objective-C предоставляет возможность формально объявить список методов (включая объявленные свойства) как протокол. Формальные протоколы поддерживаются языком и системой исполнения. Например, компилятор может проверять типы на основе протоколов, а объекты во время выполнения могут интроспективно сообщать, или они не соответствуют протоколу.