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。
如何检查 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。