我的问题很简单,希望只是语法问题。我正在尝试创建一个符合我的协议的UIViewControllers数组。我可以将此要求创建为函数参数:
func doSomething<T: UIViewController where T: MyProtocol>(controller: T) { ... }
现在,我想将这些对象存储在一个数组中,我希望能有类似的东西:
var viewControllers = Array<T: UIViewController where T: MyProtocol>()
但是,我无法弄清楚如何在数组上创建此约束。这是可能的还是我以错误的方式去做?
答案 0 :(得分:1)
您最好的选择可能是使用只有您的班级符合的协议并使用此协议约束您的类型:
protocol ClassProtocol {}
class Class : ClassProtocol {}
protocol Protocol {}
class SubClass : Class, Protocol {}
let x : protocol<ClassProtocol, Protocol> = SubClass()
Foundation
框架也会使用NSObject
和NSObjectProtocol