我想尽可能快地保留func update:currentTime
。此函数已从SKScene
类重写,并且每秒调用2000到4000次。我想循环遍历所有场景的子节点并进行可选的类型转换,以查看子节点是否实现了我的Observer接口,然后调用更新。注意:我在这里引用了两个单独的func update
方法。
如果我每秒传输4000次,我的表现会被拍摄吗? 更重要的是,Swift中的类型转换有多贵?
上下文代码:
// Called inside func update:currentTime
let children = self.children
for child in children {
if let observer = child as? TimerObserver {
observer.update()
}
}
谢谢!
答案 0 :(得分:2)
这取决于。从例如铸造int
到float
将花费成本,因为编译器将创建实际代码以将其转换为另一个。
相比之下,对象类型转换是免费的。这只是最终一个方法调用将失败,因为强制类型不是你应该告诉它的。只是你假装对象指针指向某个合法对象。指针本身不会改变。