@Siddharthan Asokan
You can have the same protocol in two different classes and the system will generate a warning "Duplicate protocol definition of 'protocolName' is ignored" (with the default settings)
You can make it work if you declare the protocol methods as @required or @optional.
Also, If you want to have 2 different objects being the delegates for the same protocol, then as already suggested, you need to have the protocol methods defined as @optional... I have tested and it works.... The trickier part is to get the reference to the objects to set the second delegate properly
I added an exercise to show how it works both ways.... Same protocol in two classes and then 2 different objects being the delegates of the same protocol. It also shows how to have 2 delegates to the same class, in the same protocol.
https://github.com/eharo2/ProtocolTest
Given that the protocols are based in the message passing paradigm, with the proper object reference and method implementation, you can do pretty much what you want.
I hope it helps... e