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