我有以下代码:
import SpriteKit
import Foundation
class GameScene: SKScene {
var occupiedCoordinates: NSMutableArray = NSMutableArray()
func addShape () {
//...
shape.position = CGPoint(x:actualX, y:actualY)
self.occupiedCoordinates.addObject(NSValue(CGPoint:shape.position))
let halfDuration = random(min: CGFloat(0.5), max: CGFloat(5))
//...
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2*halfDuration), dispatch_get_main_queue(), ^{
self.occupiedCoordinates.removeObjectAtIndex(0)
});
}
}
我使用原始剪切GCD: Dispatch After
,我在dispatch_after()
'^' is not a prefix unary operator
任何想法是什么问题?
答案 0 :(得分:9)
^{...}
是Objective-C语法。您不需要^
。
答案 1 :(得分:0)
这是将一个闭包(即一个objective-c块)传递给swift函数的正确方法:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * halfDuration), dispatch_get_main_queue(), { () -> () in
self.occupiedCoordinates.removeObjectAtIndex(0)
})
或者您也可以使用此紧凑形式:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * halfDuration), dispatch_get_main_queue()) {
self.occupiedCoordinates.removeObjectAtIndex(0)
}
建议阅读:Closures