Usually I (copying Apple methods) declare the protocols in the header of the class that will interact with the delegates of that protocol. (For example, the UIActionSheet header file contains the protocol declaration for the UIActionSheetDelegate.) It is technically not important where you declare the protocols unless you have a circular link to the #import
statements. Usually this does not happen because the class that interacts with the protocol does this to avoid the need for #import
all other classes that will now use the protocol. (The UIActionSheet sends messages to your classes when it is rejected by the protocol, and therefore #import of any of your classes is not needed.)
If you have a protocol and several unrelated classes will interact with delegates of this protocol, this will be a good indicator to put the protocol in your own file, because the protocol is not really associated with one particular class.
source share