我想做这样的事情(这不是编译后的代码,因为这只是我最终要接收的示例):
protocol AP {
class func perform() -> self
}
class A: UIViewController, AP {
//
...
//
class func perform() -> A {
return A()
}
}
我需要此作为结果let vc = A.perform()
,这意味着我需要将返回订阅者自身类型的协议
我该怎么做?
答案 0 :(得分:4)
我认为这应该做您想要的:
protocol AP {
associatedtype T
static func perform() -> T
}
class A: UIViewController, AP {
//
...
//
class func perform() -> A {
return A()
}
}
您现在可以按照需要执行以下操作:
let vc = A.perform()
答案 1 :(得分:0)
给出返回类型。自我不是返回类型。
protocol AP {
func perform() -> ()
}
class A: UIViewController, AP {
//
...
//
func perform() {
}
}