2017-02-23 71 views
3

我已经定义了以下通用类:斯威夫特:如何定义一个通配符泛型类

class HView<V: UIView> { 
    let vw: V 
    init(_ vw: V) { 
     self.vw = vw 
    } 

    var view: UIView { 
     get { return vw } 
    } 
} 

我将如何定义以下持有这个类的实例?

var hviews: [HView] // Error: reference to generic type 'HView' requires arguments in <...> 
var hviews: [HView<?>] // Error: Expected Type 

回答

2

这不是Java:P

你需要定义typy

var hviews: [HView<UILabel>] 

您还可以定义协议,以及实现此协议后

protocol HViewProtocol { 
    var view: UIView { get } 
} 

class HView<V: UIView>: HViewProtocol { 
    let vw: V 
    init(_ vw: V) { 
     self.vw = vw 
    } 

    var view: UIView { 
     get { return vw } 
    } 
} 

var hviews: [HViewProtocol]