我想这样做:
UIView <UITextFieldDelegate>*
很快。
使子类化 UIView 的对象也符合 UITextFieldDelegate
协议(protocol)。
最佳答案
可以表达(id <UITextFieldDelegate, UIScrollViewDelegate>)
使用 Protocol Composition
但不是。(UIView<UITextFieldDelegate> *)
.除了类定义
// Obj-C
- (void)methodName:(id <UITextFieldDelegate, UIScrollViewDelegate>)arg { ... }
// Swift
func methodName(arg:protocol<UITextFieldDelegate, UIScrollViewDelegate>!) { ... }
实际上,一个 Obj-C 方法声明为 - (void)methodName((UIView<UITextFieldDelegate> *))arg;
,当它桥接到 Swift 时,你可以用任何 UIView
调用实例。
编辑:
经过一些研究,您似乎可以声明您的 func
像这样
func myFunc<T:UIView where T:UITextFieldDelegate>(view:T) { ... }
关于ios - 我可以在 Swift 中强制协议(protocol)符合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26009107/