Swift 检查 class 是否有封装协议

Swift check if the class has encapsulate protocol

如何检查 class 是否符合封装协议?

协议:

@objc protocol Animation {
    func updateWithState (state: GKState)
}

Class:

class car : Entity, Animation {
}

某处:

 if let myVC = entity as? Animation {
    myVC.updateWithState(nextState)
 }

工作正常。


同时....

协议:

@objc protocol Vehicle:  Animation {}

Class:

class car : Entity, Vehicle {
}

某处:

 if let myVC = entity as? Animation {
    myVC.updateWithState(nextState)
 }

不起作用,总是False,永远不要进入里面。

如何查看协议内部的协议?

坦克!

通过 playground 检查它使用 pure Swift 没有问题,所以如果它不适合你,那么可能与 @objc 桥接有关,请参见下图了解工作 playground。