我正在移植一个我在Objective c中制作的游戏,因为它是学习如何移植某些内容以及如何将swift与目标c和目标c迅速混合的好方法。
但经过大量搜索后,我无法找到如何移植这行代码:
GCControllerDirectionPadValueChangedHandler dpadMoveHandler =
^(GCControllerDirectionPad *dpad, float xValue, float yValue) { }
我发现的唯一一件事是来自苹果的这段代码:
夫特
typealias GCControllerDirectionPadValueChangedHandler =
(GCControllerDirectionPad!, CFloat, CFloat) -> Void
目的-C
typedef void (^GCControllerDirectionPadValueChangedHandler)
(GCControllerDirectionPad *dpad, float xValue, float yValue)
-
这是我迄今为止尝试过的代码,但没有运气。
var dpadMoveHandler: GCControllerDirectionPadValueChangedHandler =
(#dpad:GCControllerDirectionPad, #xValue:CFloat, #yValue:CFloat) {
}
答案 0 :(得分:3)
该行声明了一个Objc块。您在Swift中查看的typealias是一种闭包类型。等效的代码是:
var dpadMoveHandler:GCControllerDirectionPadValueChangedHandler =
{
(dpad:GCControllerDirectionPad!, xValue:CFloat, yValue:CFloat) -> () in
return
}
了解Swift闭包here。