“dispatch_once_t”在Swift中不可用:使用懒惰初始化的全局变量
参见英文答案 >
Whither dispatch_once in Swift 3?6
> Using a dispatch_once singleton model in Swift25个 迁移到Swift 3时,dispatch_once_t有问题. 根据Apple’s migration guide:
所以我想迁移这个代码.所以在迁移之前: class var sharedInstance: CarsConfigurator { struct Static { static var instance: CarsConfigurator? static var token: dispatch_once_t = 0 } dispatch_once(&Static.token) { Static.instance = CarsConfigurator() } return Static.instance! } 迁移后,按照Apple的指南(手动迁移),代码如下所示: class var sharedInstance: CarsConfigurator { struct Static { static var instance: CarsConfigurator? static var token = {0}() } _ = Static.token return Static.instance! } 但是当我运行这个访问返回时,我得到以下错误Static.instance !:
我从这个错误中看到,实例成员为零,但为什么呢?我的迁移有问题吗?
即使Swift 2中有效,该代码过于冗长.在Swift 3中,Apple强制您通过关闭来使用延迟初始化:
class CarsConfigurator { static let sharedInstance: CarsConfigurator = { CarsConfigurator() }() } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |