将 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 并让它自动转换。 :)
我正在将一些 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 并让它自动转换。 :)