我需要在通用基类中传递一个类型。

class SomeBaseClass<T: AnyClass> {
   // Implementation Goes here
}

我收到以下错误:



理想情况下,我想使用“T”作为特定类型而不是AnyClass,但是AnyClass也可以。

谢谢

最佳答案

如果希望类型为类,则应使用AnyObject

class SomeBaseClass<T: AnyObject> {
    // Implementation Goes here
}

// Legal because UIViewController is a class
let o1 = SomeBaseClass<UIViewController>()

// Illegal (won't compile) because String is a struct
let o2 = SomeBaseClass<String>()

10-04 10:32