gpt4 book ai didi

Objective-C 快速翻译问题

转载 作者:行者123 更新时间:2023-11-30 13:05:46 24 4
gpt4 key购买 nike

我正在尝试将其转换为 swift:

+ (instancetype)sharedGameKitHelper
{
static GameKitHelper *sharedGameKitHelper;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedGameKitHelper = [[GameKitHelper alloc] init];
});
return sharedGameKitHelper;
}

现在我没有任何 Objective-C 经验,所以我使用了这个转换器:Objectivec2swift.com它给了我这个:

class func sharedGameKitHelper() -> Self {
var sharedGameKitHelper: GameKitHelper?
var onceToken: dispatch_once_t
dispatch_once(onceToken, {() -> Void in
sharedGameKitHelper = GameKitHelper()
})
return sharedGameKitHelper!
}

它给了我一些错误,我不知道该如何处理它,所以我希望在这里得到一些帮助。

错误:

Errors

最佳答案

为了与旧的 C API 兼容,需要使用罕见的 & 运算符来处理参数的寻址性质。 OnceToken 需要一个唯一的值。此外,您还需要显式类型而不是Self。最后,为了紧凑性,您可以使用尾随闭包语法和推断函数签名。

class GameKitHelper {
static var onceToken: dispatch_once_t = 1
class func sharedGameKitHelper() -> GameKitHelper {
var sharedGameKitHelper: GameKitHelper?
dispatch_once(&onceToken) { sharedGameKitHelper = GameKitHelper() }
return sharedGameKitHelper!
}
}

但是,这种方法并不惯用且过于复杂。请参阅:

http://krakendev.io/blog/the-right-way-to-write-a-singleton

其中引用了 SO:

Using a dispatch_once singleton model in Swift

关于Objective-C 快速翻译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39395339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com