I am confused about what the difference is between a protocol and an interface? They both seem to be doing the same thing?
Is it like abstract in C# in that you are required to implement it?
I am confused about what the difference is between a protocol and an interface? They both seem to be doing the same thing?
Is it like abstract in C# in that you are required to implement it?
In Objective C an interface is equivalent to a C++ class declaration. And a protocol is equivalent to a Java interface.
Edit: In Objective C the class definition is separated into two components called the interface and implementation, which allows you to shrink the header files. This is similar to C++. Java doesn't have an equivalent, because you implement your class functions within the class definition. C# is similar to Java in this respect.
a protocol in Objective-C is the same as an interface in java, if thats what you mean
A protocol is a group of related properties and methods that can be implemented by any class. They are more flexible than a normal class interface, since they let you reuse a single API declaration in completely unrelated classes. This makes it possible to represent horizontal relationships on top of an existing class hierarchy.
A class interface declares the methods and properties associated with that class.
A protocol, by contrast, is used to declare methods and properties that are independent of any specific class.
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