将 objective c 转换为 swift - GameKit

converting objective c to swift - GameKit

我正在将一些 objective c 转换为 swift,但我卡在了一条我不明白的线上:

localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error) {

让我感到困惑的部分是插入符号及其后面的内容:

^(UIViewController *viewController, NSError *error)

更重要的是,我想了解该行的含义(除了它的 swift 转换)

它是一个 block - 它就像一个 C 函数,您可以将其用作变量(例如,在分配 属性 时)。

Swift 中的等效概念称为 closure. Fortunately for you, they are compatible - 您可以将 Swift 闭包传递给 Objective-C 需要块的方法和属性。

这是一个街区。 Swift 等效项可能如下所示

let handler: (UIViewController, NSError) -> Void = { (controller, error) in
    ...
}

这是一个 Objective-C 街区。在 Swift 中将转化为以下闭包:

localPlayer.authenticateHandler = { 
    (viewController: UIViewController, error: NSError) in

    }

没那么复杂。

尽管您仍然可以使用 iSwift 并让它自动转换。 :)