У вас может быть, например, контейнер, который предлагает сервис для проверки того, что все его содержимое соответствует протоколу.
Protocol *contentProtocol;
- (void)setContentProtocol:(Protocol *)proto;
Тогда пользователь контейнера может вызвать:
[container setContentProtocol:@protocol(MyProtocol)];
И где-то в контейнере может быть сделана проверка:
[[item class] conformsToProtocol:contentProtocol];