【发布时间】:2018-07-31 07:57:30
【问题描述】:
我有一个带有通用函数的协议,它返回通用 ViewController。这迫使我在默认实现中添加类型约束检查。
protocol RouterViewController {
func getViewController<T: UIViewController>(_ name: Storyboard) -> T
}
extension RouterViewController {
func getViewController<T>(_ name: Storyboard) -> T where T: UIViewController {
let storyBoard = UIStoryboard.init(storyboard: name)
return storyBoard.instantiateViewController()
}
}
没有泛型我也可以做同样的例子
struct RouterViewController {
static func getViewController(_ name: Storyboard) -> UIViewController {
let storyBoard = UIStoryboard.init(storyboard: name)
return storyBoard.instantiateViewController()
}
}
我有一组问题
- 如果我必须进行类型检查,那么我会选择工厂方法吗?如何对泛型做同样的事情?
- 如果我想使用泛型如何检查此函数中的当前类型,返回如
func<SignIn>() -> T
【问题讨论】:
-
什么是
Storyboard? -
@vadian 这是情节提要名称类型的字符串枚举