我想这样做:
UIView <UITextFieldDelegate>*
迅速。

使对象成为UIView的子类也符合UITextFieldDelegate协议。

最佳答案

您可以使用Protocol Composition表达(id <UITextFieldDelegate, UIScrollViewDelegate>)但不是(UIView<UITextFieldDelegate> *)。除了类定义。

// Obj-C
- (void)methodName:(id <UITextFieldDelegate, UIScrollViewDelegate>)arg { ... }

// Swift
func methodName(arg:protocol<UITextFieldDelegate, UIScrollViewDelegate>!) { ... }

实际上,一个声明为- (void)methodName((UIView<UITextFieldDelegate> *))arg;的Obj-C方法在桥接到Swift时,可以使用任何UIView实例进行调用。

编辑:

经过一番研究,看来您可以像这样声明func
func myFunc<T:UIView where T:UITextFieldDelegate>(view:T) { ... }

09-16 20:51