Swift AnyClass引用类实例还是仅键入?

Swift AnyClass引用类实例还是仅键入?,swift,Swift,在下面的示例中,是stateClass:AnyClass一个类的实际实例,例如,我可以调用它来获取stateClass.name,或者它只是对类类型的引用。我的感觉是,从validChange行可以看出,它只是对类类型的引用,而不是我可以从中提取数据的任何类的实际实例 override func isValidNextState(stateClass: AnyClass) -> Bool { let validChange = stateClass is MonsterAttack

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

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

它只是对类类型的引用,即您可以调用:

isValidNextState(SomeClass.self)

它只是对类类型的引用,即您可以调用:

isValidNextState(SomeClass.self)

类是引用类型。因此,当您传递stateClass时,您只需传递指向
MonsterAttack
的stateClass实例的指针。因此stateClass是一个实例是的,但它与传递到
isValidNextState
函数中的实例是同一个实例

出现的
let validChange
只是选择性地将参数转换为
怪物攻击类型


这个答案可能更有用:

类是引用类型。因此,当您传递stateClass时,您只需传递指向
MonsterAttack
的stateClass实例的指针。因此stateClass是一个实例是的,但它与传递到
isValidNextState
函数中的实例是同一个实例

出现的
let validChange
只是选择性地将参数转换为
怪物攻击类型


这个答案可能更有用:

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


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


如果要访问该类的实例,可以执行
stateMachine!。stateForClass(stateClass)
@sez什么类型的stateMachine
?它是一个
GKStateMachine
。请注意,如果状态已构造但尚未添加到状态机,则它将返回
nil
。但是由于拥有该状态的状态机调用了
isValidNextState
,因此可以在
isValidNextState
内部调用
stateForClass
。如果要访问该类的实例,可以执行
stateMachine!。stateForClass(stateClass)
@sez什么类型的stateMachine
?它是一个
GKStateMachine
。请注意,如果状态已构造但尚未添加到状态机,则它将返回
nil
。但是由于拥有该状态的状态机调用了
isValidNextState
,因此可以在
isValidNextState
内部调用
stateForClass