这行代码是做什么的?

时间:2017-09-25 13:26:01

标签: ios swift

这是来自Github上的公共Eureka项目。我试图理解源代码(和Swift泛型)。我已经停留在这个片段的最后一行了。最后一行在做什么?

open class Row<Cell: CellType>: RowOf<Cell.Value>, TypedRowType where Cell: BaseCell {

    /// Responsible for creating the cell for this row.
    public var cellProvider = CellProvider<Cell>()

    /// The type of the cell associated to this row.
    public let cellType: Cell.Type! = Cell.self //what is this line doing?

2 个答案:

答案 0 :(得分:5)

它将属性cellType分配给此通用专用的Cell类型。因此,如果这是Row<PersonCell>cellTypePersonCell

这里的!几乎肯定是不必要的,并且可以在Swift 3中使用它来产生一些麻烦。

答案 1 :(得分:2)

当您调用.self作为类的静态属性时,会检索该类的类型。

因此,如果Row<CustomCell> cellType已分配CustomCell.Type