In Objective-C, you can specify both a class name and a set of protocols in a return value. For example, a UIViewController that is a UIScrollViewDelegate:
- (UIViewController<UIScrollViewDelegate> *) viewDelegate;
I can't find a way to express this in Swift. Something like this fails, since UIViewController is not a protocol:
func viewDelegate() -> protocol<UIViewController, UIScrollViewDelegate>;