You can write your code like this:
static @protocol MyProtocol <NSObject> ... @end
And it compiled successfully. Why is there no mistake? How is static interpreted by the compiler?
Obviously this is silently ignored as you cannot specify a protocol storage class as it doesn't make sense.