我需要在我的通用基类中传递一个类型.
class SomeBaseClass<T: AnyClass> {
// Implementation Goes here
}
我收到以下错误:
Inheritance from non-protocol,non-class type ‘AnyClass’ (aka
‘AnyObject.Type’)
理想情况下,我想使用’T’作为特定类型而不是AnyClass,但AnyClass也可以.
谢谢
您可以改为:而不是指定T需要成为一个类:
class SomeBaseClass<T> {
let type: T.Type
init(type: T.Type) {
self.type = type
}
}
如果你计划使用T.Type很多,可能值得使用typealias:
class SomeBaseClass<T> {
typealias Type = T.Type
let type: Type
...
}
一些示例用法:
let base = SomeBaseClass(type: String.self)
此方法的优点是T.Type可以表示结构和枚举,以及类.
原文链接:https://www.f2er.com/iOS/328815.html