【发布时间】:2017-02-04 22:34:18
【问题描述】:
在一个类中,我之前会像这样创建一个共享实例:
class MenuConfigurator
{
// MARK: Object lifecycle
class var sharedInstance: MenuConfigurator
{
struct Static {
static var instance: MenuConfigurator?
static var token: dispatch_once_t = 0
}
dispatch_once(&Static.token) {
Static.instance = MenuConfigurator()
}
return Static.instance!
}
}
似乎 Swift 3.0 迁移工具已将代码块更改为:
class MenuConfigurator
{
private static var __once: () = {
Static.instance = MenuConfigurator()
}()
// MARK: Object lifecycle
class var sharedInstance: MenuConfigurator
{
struct Static {
static var instance: MenuConfigurator?
static var token: Int = 0
}
_ = MenuConfigurator.__once
return Static.instance!
}
}
我收到错误 Use of unresolved identifier Static。这里发生了什么?为什么要创建新的 var private static var __once?
【问题讨论】:
-
您好,将项目转换为 swift 3 真是一场噩梦。您是否尝试过放置您之前的代码并查看它给出的错误。从中您可能会知道为什么转换工具会以这种方式改变它。
static你也可以在 swift 3 中使用。我正在使用它。但仅限于小s