此函数在所有curses(也称为Swift 3)的诅咒之前工作。迁移到Swift 3之后,我的友好且可爱的IDE Xcode在行SCNTransaction.completionBlock
上显示这个令人沮丧的错误:
无法调用非功能类型的值'(() - > Void)?'
其他几个帖子也处理类似的错误,但这些解决方案都不适用。
该行有什么问题???
func test(_ block: SCNNode, animated: Bool) {
// Do stuff
SCNTransaction.begin()
SCNTransaction.animationDuration = animated ? AnimationDur : 0.0
SCNTransaction.completionBlock {
block.removeFromParentNode()
}
// Animate stuff
SCNTransaction.commit()
}
答案 0 :(得分:14)
SCNTransaction.completionBlock是一个类属性。也许你的意思是这个?
// ↓
SCNTransaction.completionBlock = {
block.removeFromParentNode()
}
答案 1 :(得分:3)
SCNTransaction.completionBlock
不是一个可以通过尾随闭包语法调用的函数,它是一个属性。您需要为其分配闭包:
SCNTransaction.completionBlock = {
block.removeFromParentNode()
}
换句话说,你只需要添加一个等号。