在下面的例子中是stateClass: AnyClass一个类的实际实例,例如我可以调用它来获取stateClass.name或者它只是对类类型的引用。我的感觉是,从validChange行来看,它只是对类类型的引用,而不是我可以从中提取数据的任何类的实际实例?

override func isValidNextState(stateClass: AnyClass) -> Bool {
    let validChange = stateClass is MonsterAttack.Type
    return validChange
}

最佳答案

AnyClass定义如下:typealias AnyClass = AnyObject.Type这是实际的类类型本身。因此,如果有一个名为“Test”的class,则必须通过Test.self,并且只能对其调用静态/类方法/属性和初始值设定项。如果要使用实际实例,请使用AnyObject(仅适用于类)或Any(适用于任何对象):

override func isValidNextState(stateClass: AnyObject) -> Bool {
    let validChange = stateClass is MonsterAttack.Type
    return validChange
}

关于swift - Swift AnyClass引用Class实例还是只是Type?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31251454/

10-09 09:52