En Objective-C, il est possible de spécifier une classe conforme à un protocole en tant que paramètre de méthode. Par exemple, je pourrais avoir une méthode qui n'autorise qu'un UIViewController
qui est conforme à UITableViewDataSource
:
- (void)foo:(UIViewController<UITableViewDataSource> *)vc;
Je ne trouve pas de moyen de faire cela dans Swift (ce n'est peut-être pas encore possible). Vous pouvez spécifier plusieurs protocoles en utilisant func foo(obj: protocol<P1, P2>)
, mais comment exigez-vous que l'objet appartienne également à une classe particulière?