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