将Objective-C块移植到Swift

时间:2014-06-18 22:56:16

标签: objective-c swift

我正在移植一个我在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)  {

    }

1 个答案:

答案 0 :(得分:3)

该行声明了一个Objc块。您在Swift中查看的typealias是一种闭包类型。等效的代码是:

var dpadMoveHandler:GCControllerDirectionPadValueChangedHandler = 
  { 
     (dpad:GCControllerDirectionPad!, xValue:CFloat, yValue:CFloat) -> () in 
     return 
  }

了解Swift闭包here