Я прохожу учебник по iOS со страницы разработчиков Apple .
Мне кажется, что protocol
и interface
почти одинаковый функционал.
Есть ли различия между ними?
Различное использование в проекте?
обновленный
Да , я прочитал ссылку выше, и я до сих пор не уверен, что различия и использование между protocol
и interface
. Когда я задаю такой вопрос, я хотел бы увидеть простое объяснение этой темы. Иногда бывает сложно получить все из документации.
Ответы:
По сути, протоколы очень похожи на интерфейсы Java, за исключением:
,
Это сразу очевидные различия для разработчика Java (или, по крайней мере, то, что я заметил до сих пор).
источник
default
ключевым словом . Смотрите руководство по Oracle .Дополняя ответ @Thomas Schar. Магия протокола Swift происходит от расширения.
2). Интерфейс Java 8 может иметь реализации по умолчанию, но это невозможно сделать «задним числом».
его реализации, если необходимо) в любой класс или структуру.
«слепоты угловых скобок» в некоторых случаях.
Одна вещь, которая заставила меня почесать голову на пару часов, это то, что не все протоколы могут использоваться в качестве типов свойств. Например, если у вас есть протокол с typealias, вы не можете напрямую использовать его как тип свойства (это имеет смысл, когда вы думаете об этом, но исходя из Java, мы действительно хотим иметь свойство, подобное userDao: IDao).
источник
required
перед функцией в протоколе, вы просто получаете'required' may only be used on 'init' declarations
...