小编ore*_*gon的帖子

超类方法在swift中返回子类类型

我有这个代码:

class Dark: NSObject {
  class var className: String {
    return NSStringFromClass(self)!.componentsSeparatedByString(".").last!
  }

  var success = 0

  class func devour<T: Dark>(params: Int) -> T {
    var s = T()
    return assign(s, params: params)
  }

  class func assign<T: Dark>(item: T, params: Int) -> T{
    if item.dynamicType === self {
      item.success = params
    }
    return item
  }
}

class Black: Dark {
}

class Violet: Dark {
}

Black.className // returns "Black"
Violet.className // returns "Violet"
Run Code Online (Sandbox Code Playgroud)

我这样做时会出现问题:

var ret = Black.devour(5)
ret.success …
Run Code Online (Sandbox Code Playgroud)

iphone mobile ios swift

9
推荐指数
1
解决办法
4827
查看次数

标签 统计

ios ×1

iphone ×1

mobile ×1

swift ×1