В Objective-C можно передать класс в качестве параметра методу:
- (void) methodThatTakesClass:(Class)theClass;
И можно передать экземпляр, соответствующий протоколу в качестве параметра:
- (void) myConformInstance:(id <MyProtocol>)theObject;
Можно ли использовать комбинированные функции? Метод, который принимает класс, который соответствует определенному протоколу.