В чем разница между протоколом и интерфейсом в Objective-c?
Я смущен тем, что разница между протоколом и интерфейсом? Кажется, что они делают то же самое?
Является ли это абстрактным в С#, в котором вы должны его реализовать?
Ответ 1
протокол в Objective-C совпадает с интерфейсом в java, если это означает, что вы имеете в виду
Ответ 2
В Objective C интерфейс эквивалентен объявлению класса С++. И протокол эквивалентен интерфейсу Java.
Изменить: в Objective C определение класса разделяется на два компонента, называемые интерфейсом и реализацией, что позволяет сжимать файлы заголовков. Это похоже на С++. У Java нет эквивалента, потому что вы реализуете свои функции класса в определении класса. В этом отношении С# похож на Java.
Ответ 3
Objective-C: protocol.
Java: interface.
В противном случае нет разницы.
Ответ 4
In Java - you implement an Interface
In Swift/Objective C - you conform to a Protocol
"Program to an Interface, not an Implementation"
- Design Patterns 1995
Ответ 5
Протокол представляет собой группу связанных свойств и методов, которые могут быть реализованы любым классом. Они более гибкие, чем интерфейс обычного класса, поскольку они позволяют повторно использовать единую декларацию API в совершенно несвязанных классах. Это позволяет представлять горизонтальные отношения поверх существующей иерархии классов.
Интерфейс класса объявляет методы и свойства, связанные с этим классом.
Протокол, напротив, используется для объявления методов и свойств, которые не зависят от какого-либо конкретного класса.