Um, ok (I think).
I guess I'm speaking to the thread as whole. I find some of the terminology confusing (particularly the use of implementation).
I think of protocols in terms of design. They are a first-class design consideration. Now, I'm not an ObjC coder (just learning it for fun - and at a very slow pace) but protocols are like Java interfaces which themselves are like Smalltalk protocols. They are a collection of method signatures (selectors in ObjC speak) that you define for use again and again in your app. There is no code (implementation) behind these signatures. They describe a standard protocol, a standard way of interacting with objects in classes that implement the interface.
There is explicit notation for interfaces in the UML, and Java, Smalltalk and ObjC also have explicit syntax for them. This allows for inheritance and polymorphism to be expressed distinctly. C++ for example has no distinction - using the same syntax for both concepts.
Objects interact with other objects to get stuff done but each association and each interaction (message-send or call) is hardwired to objects in a specific class or class hierarchy. Interfaces allows us to choose to hardwire an association to only objects in that class or to any object that implements a certain interface.
Anyway, I've probably rambled enough. The point is I see these as a design-time thing and there is explicit UML notation for them. In fact, here is the UML definition. "An interface is a declaration of a collection of operations that may be used for defining a service offered by an instance."