假设我想创建一个属性,它是UIViewController的子类,并且符合协议MyDelegateProtocol.在Objective-C中,我会写一些类似于:
@property (strong, nonatomic) UIViewController<MyDelegateProtocol> *delegate;
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何在Swift中写这个.我知道如何声明一个符合协议的属性,或者一个特定类型的属性:
let delegate : MyDelegateProtocol?
let delegate : UIViewController?
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何做到这两点.如果我尝试类似的东西:
let delegate : UIViewController<MyDelegateProtocol> ?
Run Code Online (Sandbox Code Playgroud)
然后我得到一个编译器错误Cannot specialize non-generic type 'UIViewController'.可能是因为我现在正在徘徊在仿制药领域.我试过通过Swift关于协议的协议和其他Stack Overflow问题的书,但我还没有找到我正在寻找的东西.
我有一个必须是UIView也实现协议的变量MTMathKeyboard。
我试过了,
var keyboard: (UIView & MTMathKeyboard)
var keyboard: UIView<MTMathKeyboard>
Run Code Online (Sandbox Code Playgroud)
实现协议的非泛型类实例的语法是什么?