我正在尝试创建一个方法,该方法使视图控制器也符合协议。在目标C中,看起来如下所示:
- (void)myMethod:(UIViewController<MyProtocol> *)viewController
但我无法找到同时检查类类型和协议一致性的方法。我可以设置函数签名来验证一半,然后检查函数类型中的第二部分:
func myMethod(myObject: MyProtocol) {
if myObject is UIViewController {
// Do something with it
} else {
// Handle the unexpected type
}
}
感觉有很多额外的检查和人为错误的可能性。有没有办法检查方法签名中的类类型和协议一致性?或者,我可以创建一个继承自UIViewController并符合协议的基类,但这增加了我希望尽可能避免的额外错误。关于如何处理这个问题的想法?