Em Objective-C, é possível especificar uma classe em conformidade com um protocolo como parâmetro de método. Por exemplo, eu poderia ter um método que permite apenas um UIViewControllerque esteja em conformidade com UITableViewDataSource:
- (void)foo:(UIViewController<UITableViewDataSource> *)vc;
Não consigo encontrar uma maneira de fazer isso no Swift (talvez ainda não seja possível). Você pode especificar vários protocolos usando func foo(obj: protocol<P1, P2>), mas como você exige que o objeto também seja de uma determinada classe?